Могу ли я использовать (?=...)|(?<=...) вместо автономного (? =...) или (? <=...) во всех случаях?
Мой вопрос
Могу ли я использовать lookahead|lookbehind
вместо автономного lookahead
или же lookbehind
во всех случаях?
я просто думаю
(?=...)|(?<=...)
похож на \b
В терминах нам не нужно говорить, что мы хотим использовать левую или правую границу слова (или смотреть назад или вперед), а просто сказать, что "любой из них".
От этого вопроса В чем разница между \b и \>, \<в регулярных выражениях?:
Мы увидим, что мы можем использовать \b
вместо \<
а также \>
И для (?=...)|(?<=...)
Я не уверен, что это безопасно или не сказать, что мы можем использовать (?=...)|(?<=...)
вместо автономного (?=...)
или же (?<=...)
во всех случаях.
Если у вас есть пример, который (?=...)|(?<=...)
нельзя использовать вместо (?=...)
или же (?<=...)
Пожалуйста, покажите мне.
1 ответ
Последовательные обходные пути являются логическим И.
Если вы поместите их между чередованиями, они будут логическими ИЛИ.
Вы можете вкладывать обходные пути.
(?= a | (?<! b ) ) [^c]
что эквивалентно
(?: (?= a ) | (?<! b ) ) [^c]
Следует помнить, что обходные пути безопасны для возврата.
И когда вы вводите поисковый запрос, он поддерживает отдельную позицию поиска.