正则表达式获得所有引用的单词,这些单词也不是单引号

时间:2017-03-03 22:26:37

标签: javascript regex

是否可以使用单个正则表达式获取所有带引号的文本?

来自regexr的示例文本:

  

编辑"表达式" &安培;要查看匹配项的文字。滚动"匹配"或表达的细节。   使用ctrl-z撤消错误。   保存'收藏夹& "分享"表达式'与朋友或社区。 "探索"使用工具获得结果。一个完整的参考&图书馆提供帮助,或观看视频教程。

在这种情况下,我想捕获ExpressionmatchesExplore,但不是Share,因为'Favorites & "Share" expressions'是单引号。

2 个答案:

答案 0 :(得分:2)

您无法构建仅匹配Javascript中所需部分的正则表达式,但是您可以构建一个匹配所有字符串且没有间隙的模式,并使用捕获组来提取所需的部分:

/[^"']*(?:'[^']*'[^"']*)*"([^"]*)"/g
#^----------------------^ all that isn't content between double quotes

由于您的字符串可能会以abcd 'efgh "ijkl" mnop' qrst 结尾(简而言之,没有您想要的部分,但在单引号子字符串中有双引号部分),更改模式更安全到:

/[^"']*(?:'[^']*(?:'[^"']*|$))*(?:"([^"]*)"|$)/g

并弃掉最后一场比赛。

答案 1 :(得分:0)

没有特殊的正则表达式模式:

"

工作原理:

  • "

  • 拆分文字
  • 奇数索引是带有'包装器的字符串

  • 如果在此索引之前,存在奇数',则此项目由 \b\w*(?:cie|\bei|(?!c)\wei)\w*\b 包裹,不应被视为