У меня есть шаблон, который я назову как Z
(фактический шаблон немного длинный и не имеет значения для вопроса). Проще говоря, я хочу иметь возможность сопоставлять либо \*\sZ
, либо Z\:
, но не оба, ни ни то, ни другое.Правильный сопоставление только префикса или только суффикс (XOR)
Я попытался использовать lookaheads (как показано ниже), однако из-за шаблона между префиксом и суффиксом они не будут работать.
(\*\s(?!\:))Z((?<!\*)\:)
Есть ли способ достичь этого без необходимости дублировать шаблон (например, (\*\sZ|Z\:)
)?
Быстрое примечание о моем шаблоне нет \*
в шаблоне Z
, только в префиксе. С другой стороны, нет также в Z шаблон не \:
, это только в суффиксе, если сразу идет Z, но не после каких-либо других персонажей (есть .*
захват после суффикса)
Какой язык вы используете? – ndn
@ndn java, хотя я использовал онлайн-тестер 'pcre' для простоты. – Rogue
Я не думаю, что есть способ сделать это в java только с регулярным выражением. Извлеките 'Z' в отдельной строке и используйте его для создания общего шаблона, чтобы вам не пришлось его дублировать. – ndn