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

标签 regex

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

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

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

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

Hello world "This is a test"
"Another test" 5 x 4
'And this has an escaped quote don\'t in it ' Blue Boy
"This has a single quote ' but doesn't end the quote as it started with double quotes"
hello
28 + 2 / 10 * 3 abc
" Lorem ipsum dolor\" sit 'amet' "

这可能吗?任何帮助将不胜感激。

最佳答案

您可以使用 PCRE 模式,例如

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

请参阅regex demo

详细信息

  • (?:(['"])(?:\\\1|.)*?\1|\d+(?:\s*[*\/+x-]\s*\d+)*)(*SKIP)(*F) - " 之间的子字符串或'字符或 1+ 位数字后跟 0 次或多次出现 / , + , - , *x用 0+ 空格和 1+ 数字括起来,匹配将被丢弃,并从失败的位置搜索下一个匹配
  • |
  • (?=\S) - 下一个字符必须是非空白字符
  • [^'"0-9+\-%*\/<>\!=&|]+ - 除否定字符类中指定的字符外的 1 个或多个字符。

关于REGEX 组合正则表达式字符串,然后查找除匹配项之外的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63290979/

相关文章:

java - 允许方括号的正则表达式

regex - Groovy正则表达式在括号内换行

Ruby 正则表达式匹配文本,如果它不是以字符开头

python - Python 中的 "find . -regex ..."或如何查找全名(路径+名称)与正则表达式匹配的文件?

regex - 结合删除标签正则表达式和删除 sed 中的空行 - Unix

java - 无法弄清楚 REGEX java

java - 使用 UNICODE_CHARACTER_CLASS 标志时不同的 Java 正则表达式匹配行为

regex - 和语句使用 grep/正则表达式

正则表达式用星号模式替换电话号码

javascript - 使用 jquery 和 regex 设置正负十进制数的格式