正则表达式:匹配所有不包含某个字符串的字符串?
正则表达式:匹配所有不包含某个字符串的字符串?
这个问题已经有了答案:
好的,这是非常愚蠢的一个问题,但我从未学会如何解决它,这让我很麻烦。
那么,我要怎样指定一个字符串,以便可以不包含其他字符序列?例如,我想匹配所有不以“.config”结尾的行。
我认为我可以这样做
.*[^(\.config)]$
但这行不通(为什么呢?)
我知道我可以这样做
.*[^\.][^c][^o][^n][^f][^i][^g]$
但请告诉我有没有更好的方法。
admin 更改状态以发布 2023年5月22日
你的问题包含两个问题,以下是一些答案。
匹配不包含某个字符串(比如说 .config
)的行:
^(?:(?!\.config).)*$\r?\n?
匹配不以某个字符串结束的行:
^.*(?
还有一个额外的问题:匹配不以某个字符串开始的行:
^(?!\.config).*$\r?\n?
(每行包括换行符,如果有)。
哦,关于为什么你的方法不起作用:
[^abc]
表示“除了a、b、c以外的任意一个字符”。你的另一个解决方案也会在test.hg
上失败(因为它也以字母g结尾——你的正则表达式会逐个字符地匹配,而不是整个.config
字符串。这就是为什么你需要 lookaround 处理这个问题。