Использование вложенных выражений в регулярных выражениях

Для группировки символьных запросов и применения операторов к вложенным выражениям используются (круглые скобки).

(dog)+ находит слово dog один раз, dogdog два раза (*dog*dog и dog*dog*) и dog eat dog два раза.

В некоторых инструментах, например, в узле Замена терминов, имеется средство для полного или частичного захвата символов, найденных регулярным выражением, а также для дальнешей ссылки на составные компоненты найденной последовательности символов. Чтобы показать, что PolyAnalyst Grid должен найти вложенное выражение, используйте круглые скобки.

Выражение (a)b находит две последовательности в тексте ab. Первая последовательность - это всегда полная найденная последовательность, что в нашем случае - ab. Вторая последовательность a.

Для выражения (a)(b)*, первой последовательностью будет ab, второй a, а третьей b.

Для выражения (a)(b) первой последовательностью будет ab, второй - b.

Обратите внимание, что синтаксис выражения (ab) также является верным, но не имеет смысла. Здесь первой найденной последовательностью будет ab, а второй найденной последовательностью - также ab.

В этом случае мы даем PolyAnalyst Grid команду сохранить дополнительную последовательность в памяти, что не имеет никакого смысла. Рекомендуем использовать вложенные последовательности осторожно (учитывая вероятность снижения производительности узла), поскольку при каждой дополнительной паре круглых скобок PolyAnalyst Grid сохраняет в памяти дополнительную информацию для каждого соответствия.

Правила в PolyAnalyst Grid могут быть многострочными и поддерживать локальные регулярные подвыражение (макросы): $name = выражение. Локальные регулярные подвыражения не допускаются в первой строке правила. Локальные регулярные подвыражения используют тот же синтаксис, что и глобальные макросы: $name.

Несколько правил, которые могут использоваться для поиска арифметических выражений:

$expr
$expr = $term(\+$term|\-$term)*
$term = $factor(\*$factor|\/$factor)*
$factor = \d+|$group
$group = \($expr\)

Последнее выражение находит символы 2, 2+3, 2*(3+4)/85.

Регулярные выражения в PolyAnalyst Grid позволяют называть подвыражения. Используется следующий синтаксис: (?<name>выражение). На подвыражения с названием можно сослаться в обратной ссылке, используя либо \<name> либо \k<name> в поисковых правилах ($<name> or $+{name} - в правилах замены).

Правило, которое может использоваться для конвертирования двойных букв в верхний регистр:

[ПРАВИЛО ПОИСКА]
(?<sequence> $x)
$x = (?<letter> $y) \<letter>
$y = [a-b]
[ПРАВИЛО ЗАМЕНЫ]
\U$<sequence>\E
  • abb - заменяется - aBB - .