如何提取含嵌套引号的字符串?正则匹配问题求助
解决方案
要正确提取目标子串,关键是处理引号内的转义(同类型双写引号),同时无需硬编码DEFAULT标识,可用以下正则表达式:
(['"`])(?:(?!\1).|\1{2})*\1
正则说明:
(['"]):捕获开头的引号(单/双/反引号)到分组1,后续用\1`引用该引号类型(?:(?!\1).|\1{2})*:非捕获组,匹配两种情况任意次:(?!\1).:任意不是当前引号的字符\1{2}:两个连续的当前引号(代表转义的单个引号)
\1:匹配结束的同类型引号
这个正则会自动在第一个未被转义的结束引号处停止匹配,不会误包含后面的DEFAULT ''部分。
将其应用到目标字符串:
'"double quotes" are allowed inside ''single-quoted'' strings.' DEFAULT ''
会精准匹配到:
'"double quotes" are allowed inside ''single-quoted'' strings.'
内容的提问来源于stack exchange,提问作者Winchester
相关产品推荐
相关产品推荐

