Регулярное выражение, которое соответствует, только если есть только одно вхождение - PullRequest
0 голосов
/ 14 апреля 2019

Я написал это регулярное выражение

(<b>)\b[a-zA-Z][a-zA-Z0-9_]{4,15}</b>

Но я хотел бы, чтобы совпадение было запущено только в случае, если есть только одно вхождение, поэтому я подумал, что мне нужно это сделать

((<b>)\b[a-zA-Z][a-zA-Z0-9_]{4,15}</b>){1}

Но, похоже, это не работает.Что я делаю не так?

1 Ответ

2 голосов
/ 14 апреля 2019

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

^(?!.*\b[a-zA-Z][a-zA-Z0-9_]{4,15}\b.*\b[a-zA-Z][a-zA-Z0-9_]{4,15}\b).*\b[a-zA-Z][a-zA-Z0-9_]{4,15}\b.*$

Это подробное регулярное выражение, и его очень трудно прочитать. Допустим, вы хотите сопоставить строки, в которых слово BAT встречается один раз и только один раз. Мы могли бы написать:

^(?!.*\bBAT\b.*\bBAT\b).*\bBAT\b.*$
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...