【问题标题】:Regex to match word only in quotes正则表达式仅匹配引号中的单词
【发布时间】:2014-04-24 04:02:01
【问题描述】:

我正在尝试准备一个正则表达式来匹配引号中的单词。

即,如果文本如下,我想匹配 HelloWorld 在引号内,而不是另一个不在引号内的匹配。 (应该匹配 HelloWorld 的第二个实例,但不是第一个)

HelloWorld " Showing HelloWorld"

用例:

当我通过正则表达式在 Eclipse IDE 中搜索时,我需要在引号内找到文本 HelloWorld,而不是用作变量名或类名的其他 HelloWorld 实例。

【问题讨论】:

  • 仅针对此字符串实例,还是您要问如何匹配引号内的文本?
  • @TheKojuEffect 你用的是什么语言?
  • @HamZa 我的代码是用 Java 编写的。我认为这无关紧要,因为我只想从 Eclipse IDE 中搜索。
  • @TheKojuEffect 哦,是的,如果你想在双引号之间找到几个HelloWorld 的实例,你可以使用这种模式(?:(?:"|\G(?<!^))[^"\r\n]*?)\KHelloWorld(?=[^"\r\n]*"(?:(?:[^"\r\n]*"){2})*)see demo。问题是 Java 不支持 \K 转义序列。

标签: regex eclipse


【解决方案1】:

您可以使用以下内容。

'HelloWorld " Showing HelloWorld"'.match(/"(.*?)"+/g);  //["" Showing HelloWorld""]

【讨论】:

    【解决方案2】:

    作为一种快速而简单的方法,您可以使用以下命令扫描字符串:

    /"[^"]*?"/
    

    这将匹配字符串中的第一对引号(和包含的文本)(注意使用*? 进行“最小”匹配)。在循环中全局执行此操作以提取引号内的文本。每次匹配新引用的片段时,请检查它是否包含您要查找的内容(可能使用另一个正则表达式)。

    如果字符串中有转义引号,这将失败,尽管这当然可以处理。

    【讨论】:

      【解决方案3】:

      如果所有模式都像

      “显示 HelloWorld”

      你可以用这个来匹配

      /".+\s(\w+)"/g
      

      如果您的语言支持 [:alpha:]

      你只能匹配字母

      /".+\s([[:alpha:]]+)"/g
      

      匹配\w+可以同时得到字母和数字

      【讨论】:

        猜你喜欢
        • 2014-12-23
        • 1970-01-01
        • 2017-07-08
        • 2020-10-18
        相关资源
        最近更新 更多