Регулярные выражения: различия между версиями
Содержимое удалено Содержимое добавлено
Gromolyak (обсуждение | вклад) |
Gromolyak (обсуждение | вклад) м →Группы |
||
Строка 217:
=== Группы ===
; (
: Простая группа с захватом.
; (?<nowiki>:</nowiki>
: Группа без захвата. То же самое, но заключённое в скобках выражение не добавляется к списку захваченных фрагментов. Например, если требуется найти или «здравствуйте», или «здрасте», но не важно, какое именно приветствие найдено, можно воспользоваться выражением <code>здра(?:сте|вствуйте)</code>.
;(?=
: Группа с положительной опережающей проверкой (positive lookahead assertion). Продолжает поиск только если справа от текущей позиции в тексте находится заключённое в скобки выражение. При этом само выражение не захватывается. Например, <code>говор(?=ить)</code> найдёт «говор» в «говорить», но не в «говорит». Иными словами, ищет в строке «говор», после которого сразу идут символы «ить
;(?!
: Группа с негативной опережающей проверкой (negative lookahead assertion). Продолжает поиск только если справа от текущей позиции в тексте не находится заключённое в скобки выражение. При этом само выражение не захватывается. Например, <code>говор(?!ить)</code> найдёт «говор» в «говорит», но не в «говорить».
;(?<=
: Группа с положительной ретроспективной проверкой (positive lookbehind assertion). Продолжает поиск только если слева от текущей позиции в тексте находится заключённое в скобки выражение. При этом само выражение не захватывается. Например, <code>(?<=об)говорить</code> найдёт «говорить» в «обговорить», но не в «уговорить».
;(?<!
: Группа с отрицательной ретроспективной проверкой (negative lookbehind assertion). Продолжает поиск только если слева от текущей позиции в тексте не находится заключённое в скобки выражение. При этом само выражение не захватывается. Например, <code>(?<!об)говорить</code> найдёт «говорить» в «уговорить», но не в «обговорить».
…
== Реализации ==
|