我有一个文件(基本上是一个日志文件) - 其中包含以下几行:
Error; 1 no match CIRCLE more.
Info; 2 should not match
Error; 3 should : match SHAPE 'abc'.
Debug; 4 should not match
Error; 5 CIRCLE / again
Error; 6 TRIANGLE should match
我想查找/匹配所有以'错误开头的完整行;'但是没有一句话' CIRCLE'在那条线上。所以我想找到第3和第6行:
Error; 3 should : match SHAPE 'abc'.
Error; 6 TRIANGLE should match
我从(Error;).+
开始的模式给了我所有的错误'线条,但我不知道如何排除CIRCLE。应该是使用[^ ... ]
或者我认为是先行的非常基本的东西。
我在网上玩这个游戏:http://regexr.com/39kig
答案 0 :(得分:3)
答案 1 :(得分:2)
使用以下使用negative lookahead的正则表达式。如果正则表达式包含锚点( ^
- 表示行的开头,$
- 表示行的结尾,请不要忘记添加多行修饰符。
^Error;(?!.*?CIRCLE).*$
> var r = "Error; 1 no match CIRCLE more.\nInfo; 2 should not match\nError; 3 should : match SHAPE 'abc'.\nDebug; 4 should not match\nError; 5 CIRCLE / again\nError; 6 TRIANGLE should match";
undefined
> var m = r.match(/^Error;(?!.*?CIRCLE).*$/gm)
undefined
> console.log(m)
[ 'Error; 3 should : match SHAPE \'abc\'.',
'Error; 6 TRIANGLE should match' ]