是否可以使用单个正则表达式获取所有带引号的文本?
来自regexr的示例文本:
编辑"表达式" &安培;要查看匹配项的文字。滚动"匹配"或表达的细节。 使用ctrl-z撤消错误。 保存'收藏夹& "分享"表达式'与朋友或社区。 "探索"使用工具获得结果。一个完整的参考&图书馆提供帮助,或观看视频教程。
在这种情况下,我想捕获Expression
,matches
和Explore
,但不是Share
,因为'Favorites & "Share" expressions'
是单引号。
答案 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
包裹,不应被视为