Понадобилось мне найти все слова в предложении, кроме определенных слов. Например, в предложении ‘Many modern computing systems provide wildcard characters in matching filenames from a file system.‘ найти все, кроме слов computing и matching.
Испытуемый текст: ‘Many modern computing systems provide wildcard characters in matching filenames from a file system.‘
Регулярное выражение: ‘/\b(?!(?:computing|matching)\b)\w+\b/’
Результат: перечень всех слов за исключением computing и matching.
где,
\b – граница слова
\w – набор символов [A-Za-z0-9_]
?: – несохраняющие скобки, т.е. все что внутри группирующих скобок не будет включено в результат
?! – поиск с инверсией, т.е. то, что внутри будет исключено из совпадения
Вообще комбинация ?! называется негативная опережающая проверка и относится к одному из четырех видов позиционных проверок:
| Тип | Регулярное выражение | Успешна, если подвыражение… |
|---|---|---|
| Позитивная ретроспективная проверка | (?<=..) | Может совпасть слева |
| Негативная ретроспективная проверка | (?<!–..) | Не может совпасть слева |
| Позитивная опережающая проверка | (?=..) | Может совпасть справа |
| Негативная опережающая проверка | (?!..) | Не может совпасть справа |
Для проверки работы можно воспользоваться:
RegExr – online инструмент для проверки регулярных выражений
Расширением для FireFox Regular Expressions Tester
Полезный материл – RegexAdvice Forums – форум по регулярным выражениям.
Пока читал бестлер про регулярным выражениям – Дж. Фридл – Регулярные выражения узнал две интересные вещи:
- по спецификации POSIX существует два диалекта регулярок BRE и ERE
- две базовые технологии, на базе которых строится механизм регулярных выражений: НКА и ДКА
BRE (basic regular expressions) – базовые регулярные выражения
ERE (extened regular expressions) – расширенные регулярные выражения
НКА (недетерминированный конечный автомат) – механизм управляется регулярным выражением
ДКА (детерминированный конечный автомат) – механизм управляется текстом
Поддержка диалектами разных метасимволов
| Метасимволы | BRE | ERE |
|---|---|---|
| Точка, ^, $, [..], [^..] | ||
| Произвольное число | * | * |
| Квантификаторы + и ? | +? | |
| Интервальный квантификатор | \{мин, макс\} | \{мин, макс\} |
| Группировка | \(..\) | (..) |
| Применение квантификаторов к скобкам | ||
| Обратные ссылки | \1..\9 | |
| Конструкция выбора |
Краткая таблица сравнения ДКА и НКА
| параметры | ДКА | НКА |
|---|---|---|
| поддержка обратных ссылок | ||
| сохранение текста в круглых скобках | ||
| быстрый поиск совпадений | ||
| быстрая компиляция | ||
| меньшие затраты памяти |


Начиная с версии MySQL 5.0 были добавлены хранимые функции и процедуры – набор SQL команд, представляющие собой программную логику сохраняемую в БД, которую в последствии можно будет вызвать.
10+ Python Frameworks
Название: The Definitive Guide to Django: Web Development Done Right
11 Syntax Highlighters To Beautify Code Presentation
Для разбора (парсинга) файла с XHTML/XML можно использовать
SPL
Раньше некогда не пользовался 