Регулярное выражение для исключения нескольких строк - PullRequest
0 голосов
/ 06 ноября 2018

Мне нужно регулярное выражение, которое исключает строки с заданными строками из соответствия. Вот что я узнал до сих пор:

https://regexr.com/42j9r

Regex:

(?<!\/)\shttps

Test-Text:

string.pdf https
string.html https
stringEndingWithSlash/ https
stringEndingWithoutSlash https

Это исключает только 3-ю строку. Но мне нужно, чтобы выражение соответствовало только строкам со строками, не заканчивающимися на .pdf, .html или косую черту. Таким образом, должна совпадать только последняя строка примера. Как я могу использовать логический | или здесь? Или есть другое решение? Спасибо - всего наилучшего, Sacha

Ответы [ 3 ]

0 голосов
/ 06 ноября 2018

Вы можете попробовать это

^((?!pdf|html|\/).)*\shttps$

Попробуйте здесь

0 голосов
/ 06 ноября 2018

Я понимаю, что ответ принят, но будет эффективнее не смотреть вперед на каждый отдельный символ, а делать два просмотра, где и когда они нужны только:

^.*[^\/] https$(?<!\.pdf https)(?<!\.html https)

... с использованием флагов gm.

0 голосов
/ 06 ноября 2018

Кажется, работает следующий шаблон:

^\w+(?!\.pdf|\.html|\/) https$

Демо

Это соответствует некоторому начальному слову, которое не заканчивается либо .pdf, .html, либо косой чертой, за которой следует пробел и https. Для этого используется негативный взгляд. Хотя могут существовать решения, которые не используют обходные пути, они кажутся наиболее простым способом реализации желаемой логики.

...