Синтаксис, такой как \w
, \d
, (?:)
поддерживается в Perl совместимых регулярных выражениях (PCRE), а не в POSIX. Такие инструменты, как egrep
, поддерживают расширенные функции для совместимости, но это не делает их POSIX.
Со страницы руководства для re_format (7) :
РАСШИРЕННЫЕ ФУНКЦИИ
Когда флаг REG_ENHANCED передается одному из вариантов regcomp (), активируются дополнительные функции. Как и расширенные реализации регулярных выражений в языках сценариев, таких как perl (1) и python (1), эти дополнительные функции могут конфликтовать со стандартами IEEE Std 1003.2 (`` POSIX.2 '') в некоторых отношениях. Используйте это с осторожностью в ситуациях, когда требуется переносимость (в том числе в прошлые версии Ma c OS X с использованием предыдущей реализации регулярных выражений).
Существует различие между «расширенным» и «расширенным». Расширенный относится к уровням функций регулярного выражения POSIX. Расширенный означает синтаксис, поддерживаемый PCRE, но не POSIX.
В синтаксисе POSIX вы можете делать многие вещи:
Для \w
, используйте [[:alnum:]_]
.
Для \d
используйте [[:digit:]]
.
Синтаксис (?:)
не нужен, поскольку MySQL REGEXP
не поддерживает захват групп в любом случае. Вы можете просто использовать ()
для группировки.
Я не думаю, что необходимо использовать валидатор Java для анализа ваших регулярных выражений. Вы должны быть в состоянии прочитать документацию и использовать только те функции, которые появляются в c.
Я имею в виду, что синтаксис регулярных выражений не так уж и сложен. Вы можете создать краткий справочный лист на заметке Post-It.