Используйте статическую строку один раз в 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*
,