Используйте статическую строку один раз в Regex при использовании двух шаблонов с OR - PullRequest
0 голосов
/ 25 июня 2018

Вот мое регулярное выражение:

STATICSTRING\s[a-zA-Z]:\\[\\\S|*\S]?.*$|STATICSTRING\s\w*

, как вы можете видеть, есть два шаблона, \s[a-zA-Z]:\\[\\\S|*\S]?.*$ и \s\w*, которые объединяются с оператором |STATICSTRING повторяется в каждом.

Есть ли способ написать STATICSTRING один раз?

1 Ответ

0 голосов
/ 25 июня 2018

Вы можете использовать оператор чередования | в конструкции группировки для группировки двух подшаблонов:

STATICSTRING\s(?:[a-zA-Z]:\\[\\\S|*\S]?.*$|\w*)
              ^^^                         ^   ^

Однако часть \\[\\\S|*\S]?.* выглядит как ошибка пользователя. Он соответствует \, затем 1 или 0 вхождений \, |, * или любому непробельному символу, а затем .* соответствует любым 0+ символам до конца строки. Убедитесь, что вы исправили это, если вы намеревались соответствовать чему-либо еще. Но ветвь \w* всегда будет «выигрывать», поскольку она всегда совпадает (либо пустая строка, либо буква (и [a-zA-Z] также соответствует букве)). Итак, шаблон выше равен STATICSTRING\s\w*.

...