正则表达式排除几个字符串

时间:2018-11-06 14:51:43

标签: regex regex-negation

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

https://regexr.com/42j9r

正则表达式:

(?<!\/)\shttps

测试文本:

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

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

3 个答案:

答案 0 :(得分:1)

以下模式似乎有效:

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

Demo

这与某个初始单词匹配, not 的结尾不是.pdf.html或正斜杠,然后是一个空格和{{1 }}。它使用否定前瞻来执行此操作。尽管有些解决方案可能不使用环视,但它们似乎是实现所需逻辑的最简单方法。

答案 1 :(得分:1)

您可以尝试

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

Try it here

答案 2 :(得分:1)

我知道答案已经被接受,但是不对每个人的字符进行前瞻,而仅在需要的时间和地点进行两次后视会更有效: / p>

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

...使用gm标志。