Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 正则表达式:排除_Regex - Fatal编程技术网

Regex 正则表达式:排除

Regex 正则表达式:排除,regex,Regex,我想从多行文本字段中排除特定图案。我有一个捕获该模式的正则表达式,所以现在我想创建一个与除此模式之外的所有模式匹配的表达式。一般的做法是什么?出于某种原因,像这样的负面前瞻:^(.(?!expression))*$对我不起作用。说明 ^(?。*?\b测试\b) 这将搜索字符串以查找test,如果字符串中存在,则测试将失败 总结 ^匹配字符串的开头 (?!向前看,看看是否有: *?除\n(0次或更多次)以外的任何字符 (匹配尽可能少的金额) \b字符(\w)之间的边界 还有一些不是char这个

我想从多行文本字段中排除特定图案。我有一个捕获该模式的正则表达式,所以现在我想创建一个与除此模式之外的所有模式匹配的表达式。一般的做法是什么?出于某种原因,像这样的负面前瞻:
^(.(?!expression))*$
对我不起作用。

说明
^(?。*?\b测试\b)

这将搜索字符串以查找
test
,如果字符串中存在,则测试将失败

总结
  • ^
    匹配字符串的开头
  • (?!
    向前看,看看是否有:
  • *?
    除\n(0次或更多次)以外的任何字符 (匹配尽可能少的金额)
  • \b
    字符(\w)之间的边界 还有一些不是char这个词的东西
  • 测试
    匹配
    测试
  • \b
    字符(\w)之间的边界 还有一些不是char这个词的东西
  • 展望结束

    • 你只是把点放错地方了。您需要在使用下一个角色之前进行前瞻,而不是在以下操作之后:

      ^(?:(?!expression).)*$
      
      此外,如果字符串中可以有行分隔符,则需要指定多行/DOTALL模式。如何做到这一点取决于您使用的正则表达式的风格。一些例子:

      (?s)^(?:(?!expression).)*$
      
      /^(?:(?!expression).)*$/s
      
      ^(?:(?!expression)[\s\S])*$
      

      或者你可以使用,这更容易理解。

      我发现这个表达对我很有用:

      ^.*(?=expression)
      
      其中
      expression
      表示与我要排除的模式匹配的正则表达式。
      我推荐使用此工具进行测试-

      您能提供一些示例输入吗?您知道它将匹配所有内容,但不匹配确切的模式吗?因此,如果您想匹配句子“森林中的树”中的单词tree,它将分配不同的选项进行匹配,但只有tree的精确匹配才会失败。。因此,根据你的目标,匹配积极因素并在匹配时放弃它更有效。你可能使用了错误的方法。如果exclude的意思是你想过滤掉它,我建议用find/replace函数来使用你的模式,用一个空字符串来替换。你用的是什么语言?如果使用linux命令行,您可以将
      -v
      标志与
      grep
      一起使用。。。好的,我更新了这个,所以它将在rubular上工作,并包含了一个示例链接