Могу ли я использовать (?=...)|(?<=...) вместо автономного (? =...) или (? <=...) во всех случаях?

Мой вопрос

Могу ли я использовать lookahead|lookbehind вместо автономного lookahead или же lookbehind во всех случаях?

я просто думаю

(?=...)|(?<=...) похож на \b

В терминах нам не нужно говорить, что мы хотим использовать левую или правую границу слова (или смотреть назад или вперед), а просто сказать, что "любой из них".

От этого вопроса В чем разница между \b и \>, \<в регулярных выражениях?:

Мы увидим, что мы можем использовать \b вместо \< а также \>

И для (?=...)|(?<=...)Я не уверен, что это безопасно или не сказать, что мы можем использовать (?=...)|(?<=...) вместо автономного (?=...) или же (?<=...) во всех случаях.

Если у вас есть пример, который (?=...)|(?<=...) нельзя использовать вместо (?=...) или же (?<=...) Пожалуйста, покажите мне.

1 ответ

Последовательные обходные пути являются логическим И.
Если вы поместите их между чередованиями, они будут логическими ИЛИ.

Вы можете вкладывать обходные пути.

(?=  a | (?<! b ) ) [^c]

что эквивалентно

(?: (?= a ) | (?<! b ) ) [^c]

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

Другие вопросы по тегам