Regex 正则表达式:排除
我想从多行文本字段中排除特定图案。我有一个捕获该模式的正则表达式,所以现在我想创建一个与除此模式之外的所有模式匹配的表达式。一般的做法是什么?出于某种原因,像这样的负面前瞻:Regex 正则表达式:排除,regex,Regex,我想从多行文本字段中排除特定图案。我有一个捕获该模式的正则表达式,所以现在我想创建一个与除此模式之外的所有模式匹配的表达式。一般的做法是什么?出于某种原因,像这样的负面前瞻:^(.(?!expression))*$对我不起作用。说明 ^(?。*?\b测试\b) 这将搜索字符串以查找test,如果字符串中存在,则测试将失败 总结 ^匹配字符串的开头 (?!向前看,看看是否有: *?除\n(0次或更多次)以外的任何字符 (匹配尽可能少的金额) \b字符(\w)之间的边界 还有一些不是char这个
^(.(?!expression))*$
对我不起作用。说明
^(?。*?\b测试\b)
这将搜索字符串以查找test
,如果字符串中存在,则测试将失败
总结
匹配字符串的开头^
向前看,看看是否有:(?!
除\n(0次或更多次)以外的任何字符 (匹配尽可能少的金额)*?
字符(\w)之间的边界 还有一些不是char这个词的东西\b
匹配测试
测试
字符(\w)之间的边界 还有一些不是char这个词的东西\b
展望结束)
- 你只是把点放错地方了。您需要在使用下一个角色之前进行前瞻,而不是在以下操作之后:
^(?:(?!expression).)*$
此外,如果字符串中可以有行分隔符,则需要指定多行/DOTALL模式。如何做到这一点取决于您使用的正则表达式的风格。一些例子:
(?s)^(?:(?!expression).)*$
/^(?:(?!expression).)*$/s
^(?:(?!expression)[\s\S])*$
或者你可以使用,这更容易理解。我发现这个表达对我很有用:
^.*(?=expression)
其中expression
表示与我要排除的模式匹配的正则表达式。
我推荐使用此工具进行测试-您能提供一些示例输入吗?您知道它将匹配所有内容,但不匹配确切的模式吗?因此,如果您想匹配句子“森林中的树”中的单词tree,它将分配不同的选项进行匹配,但只有tree的精确匹配才会失败。。因此,根据你的目标,匹配积极因素并在匹配时放弃它更有效。你可能使用了错误的方法。如果exclude的意思是你想过滤掉它,我建议用find/replace函数来使用你的模式,用一个空字符串来替换。你用的是什么语言?如果使用linux命令行,您可以将
-v
标志与grep
一起使用。。。好的,我更新了这个,所以它将在rubular上工作,并包含了一个示例链接