用于排除多个字符串的正则表达式

Regex for excluding several strings

我需要一个正则表达式来排除匹配给定字符串的行。 这是我到目前为止发现的:

https://regexr.com/42j9r

正则表达式:

(?<!\/)\shttps

测试文本:

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

这只排除了第三行。但我需要表达式只匹配字符串不以 .pdf、.html 或斜杠结尾的行。因此只有示例的最后一行应该匹配。我怎样才能使用逻辑 |还是这里?或者还有其他解决方案吗? 谢谢 - 一切顺利, 萨沙

以下模式似乎有效:

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

Demo

这匹配一些初始单词,not.pdf.html 或正斜杠结尾,然后是正斜杠space 和 https。它使用负前瞻来执行此操作。虽然可能存在不使用环视的解决方案,但它们似乎是实现所需逻辑的最简单方法。

你可以试试这个

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

Try it here

我意识到一个答案已被接受,但不向前看 每个人 角色会更有效,而是在他们的位置和时间进行两次回顾只需要:

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

...使用 gm 标志。