好的,所以这是完全愚蠢的事情,但这是我从未学会做的事情和麻烦.
如何指定不包含其他字符序列的字符串.例如,我想匹配所有不以'.config'结尾的行
我认为我可以做到
.*[^(\.config)]$
Run Code Online (Sandbox Code Playgroud)
但这不起作用(为什么不呢?)
我知道我能做到
.*[^\.][^c][^o][^n][^f][^i][^g]$
Run Code Online (Sandbox Code Playgroud)
但请告诉我有更好的方法
Man*_*anu 47
你可以使用负面的lookbehind,例如:
.*(?<!\.config)$
Run Code Online (Sandbox Code Playgroud)
这匹配所有字符串,但以".config"结尾的字符串除外
Tim*_*ker 20
你的问题包含两个问题,所以这里有几个答案.
匹配完全不包含某个字符串的行(比如说.config):
^(?:(?!\.config).)*$\r?\n?
Run Code Online (Sandbox Code Playgroud)
不匹配的行结束在某个字符串:
^.*(?<!\.config)$\r?\n?
Run Code Online (Sandbox Code Playgroud)
并且,作为奖励:匹配不以某个字符串开头的行:
^(?!\.config).*$\r?\n?
Run Code Online (Sandbox Code Playgroud)
(每次包括换行符,如果存在的话.
哦,并回答为什么你的版本不起作用:[^abc]意思是"除了a,b或c之外的任何一个(1)字符".你的另一个解决方案也会失败test.hg(因为它也以字母g结尾 - 你的正则表达式单独查看每个字符而不是整个.config字符串.这就是为什么你需要环顾来处理它.
| 归档时间: |
|
| 查看次数: |
77552 次 |
| 最近记录: |