Regex для соответствия нескольким группам a-zA-Z0-9-, но не 2 последовательных подчеркиваний __ - PullRequest
0 голосов
/ 12 февраля 2019

У меня есть пара строк, обычно слова и буквы, прописные и строчные, смешанные с числами.Я хотел бы сопоставить их все, если в строке нет двух последовательных подчеркиваний.Примеры моих строк:

first-string-String-71-word
second-otherword-X-17-word-last-word
third-nextword-8-word__otherword

Теперь я ищу регулярное выражение, которое соответствует первому и второму, но не третьему.

([a-zA-Z0-9-]+) 
(?!__)([a-zA-Z0-9-]+)
([a-zA-Z0-9-^(__)]+)

Кажется, что все они не работают -какой правильный подход здесь?

https://regex101.com/r/i7AnSS/1

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

Используйте его

^([a-zA-Z0-9-]+)$

и проверьте его по URL https://regex101.com/r/u82mre/1

0 голосов
/ 12 февраля 2019

Вы можете добавить отрицательный прогноз для двух последовательных _ в строке.Обратите внимание, что вам нужно привязать регулярное выражение к началу и концу строки, в противном случае оно может совпадать с неполным путем.

^(?!.*?__)([a-zA-Z0-9_-]+)$

https://regex101.com/r/i7AnSS/3

Обратите внимание, что это предполагает, что ваши строки могут иметь в себе один _.Если это не так, простой

^([a-zA-Z0-9-]+)$

исключит любые строки с _ в них.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...