Используйте статическую строку один раз в Regex при использовании двух шаблонов с OR

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

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

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

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

1 ответ

Решение

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

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

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

Другие вопросы по тегам