Регулярные выражения: различия между версиями

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