首页 > 解决方案 > 正则表达式:在双引号之间查找分号

问题描述

我只是从正则表达式开始。我需要找到文本中的所有情况,其中双引号之间的字符串中有分号。所以我正在寻找这样的案例

"something;something"
"something ; something"
"something; something"
"something ;something"

我找到了在双引号之间查找字符串的代码:

(["'])(?:(?=(\\?))\2.)*?\1

你能帮我修改它,以便我找到上面提到的案例吗?

标签: regex

解决方案


您可以使用否定字符类,您可以在其中添加不想匹配的内容。如果字符串中只能有 1 个分号,那么您也可以将其添加到字符类中,否则您可以[^"\r\n]*在可能出现多次的地方使用;

"([^"\r\n;]*;[^";\r\n]*)"

那会匹配

  • "从字面上匹配
  • (捕获组
    • [^"\r\n;]*匹配 0+ 次而不是", 换行符或分号
    • ;从字面上匹配
    • [^"\r\n;]*匹配 0+ 次而不是", 换行符或分号
  • )关闭捕获组
  • "从字面上匹配

您的价值在第一个捕获组中。

正则表达式演示

如果您不想只匹配双引号之间的分号,您可以在前面添加一个否定的前瞻:

(?!";")"([^"\r\n;]*;[^";\r\n]*)"


推荐阅读