Regex якоря внутри класса персонажа

Можно ли использовать якоря внутри класса символов? Это нет работа:

analyze-string('abcd', '[\s^]abcd[\s$]') 

Это выглядит как^ а также$ обрабатываются как литералы внутри класса символов; однако, избегая их (,\^\$) неЯ тоже не работаю.

Я пытаюсь использовать это выражение для создания границ слов (\b недоступно в XSLT / XQuery), но я бы предпочел не использовать группы ((^|\s)) - поскольку группы без захватаt доступно, это означает, что в некоторых сценариях я могу получить большое количество ненужных групп захвата, и это создает новую задачу поиска "реальный» захватывать группы в наборе ненужных.

 wst30 мая 2013 г., 05:48
@LarsH Это не былот, но это якобы обманщикstackoverflow.com/questions/9622869/..., Хотя есть несколько общих черт, я думаю, что этоЭто существенно другая проблема.
 LarsH30 мая 2013 г., 03:19
Кто бы ни проголосовал за закрытие дубликата, можете ли вы предоставить ссылку на предполагаемый дубликат вопроса?

Ответы на вопрос(3)

Использование каретки после первой квадратной скобки сведет на нет класс персонажа. По сути, это дает вам противоположность того, что выЭто означает, что класс символов будет соответствовать любому символу, отсутствующему в классе символов. Классы отрицательных символов также соответствуют (невидимым) символам разрыва строки.

Вы можете попытаться сделать отрицательный прогноз вперед, возможно.

(?!\s)
 wst30 мая 2013 г., 02:03
К сожалению, прогноз впереди / позадиt включено в регулярные выражения в спецификациях XQuery и XSLT. Я обновил регулярное выражение, чтобы сделать его более понятным - на самом деле я намеревался включить якорь в класс символов. Цель состоит в том, чтобы требовать соответствия "пробел ИЛИ начало / конец-якорь (без захвата) ".

Если ты'повторное использованиеanalyze-string как функция, то, вероятно, выиспользовать реализацию 3.0 XSLT или XQuery.

В таком случае, почему вы говоритене захватившие группы нет в наличии "?Спецификации функций и операторов XPath 3.0 ясно, что "Номера для захвата группы также признаются. Они обозначены синтаксисом (?: Xxxx). «Я»

 wst30 мая 2013 г., 20:41
м с использованием MarkLogic, в котором реализовано только подмножество 3.0.
Решение Вопроса

Я верю, что ответ - нет, вы можетет включает^ а также$ как якоря в[]Только как буквальные символы. (Я'Жаль, что ты не мог сделать это раньше.)

Тем не менее, вы можете заключить пробел в передней и задней части строки, а затем просто искать\s как границы слов и не говоря уже о якорях. Например.

analyze-string(concat(' ', 'abcd xyz abcd', ' '), '\sabcd\s')

Вы также можете хотеть+ после каждого\s, но это'Это отдельная проблема.

 wst30 мая 2013 г., 05:45
Это'хак, но явозьму это!

Ваш ответ на вопрос