REGEX组合正则表达式字符串,然后查找除匹配项之外的所有内容



我有两个正则表达式字符串:

  1. [^'"0-9+-%*/<>!=&|]
  2. (['"])(?:\1|.)*?1

第一个查找除了列出的字符之外的任何字符。第二个查找引号之间的任何内容,包括引号。

我想合并这些,这样我就可以找到与这些字符或引号之间的字符组匹配的任何字符,排除找到的匹配项,并返回其他所有字符。例如,在下面的短语中,我希望它只返回粗体字符。

你好世界 "这是一个测试">
"另一个测试";5 x 4
"这有一个转义的引号,不要在里面">蓝色男孩
"这有一个单独的引号,但没有在引号开始时结束用双引号">
你好
28+2/10*3abc
"Lorem ipsum dolor";坐着"amet";

这可能吗?如有任何帮助,我们将不胜感激。

您可以使用类似的PCRE模式

(?:(['"])(?:\1|.)*?1|d+(?:s*[*/+x-]s*d+)*)(*SKIP)(*F)|(?=S)[^'"0-9+-%*/<>!=&|]+

查看regex演示

详细信息

  • (?:(['"])(?:\1|.)*?1|d+(?:s*[*/+x-]s*d+)*)(*SKIP)(*F)-"'个字符之间的子字符串,或1个以上数字,后面有0个或多个/+-*x,用0个以上空格括起来,然后是1个以上的数字,将丢弃匹配,并从故障位置搜索下一个匹配
  • |
  • (?=S)-下一个字符必须是非空白字符
  • [^'"0-9+-%*/<>!=&|]+-1个或多个字符,而不是在否定字符类中指定的字符

最新更新