我有一个正则表达式来查找引号之间的值:
([\"'])(?:\\\1|.)*?\1
这工作得很好,但是,如果引号之间有双引号,那么它会失败并也会将它们分开。例如。
"value1","value2","value with "" is here","value4"
我需要像这样的输出
value1
value2
value with "" is here
value4
这意味着,如果双引号出现在某处,它应该在输出中返回该双引号。
有人能帮忙吗?
我的第一个想法是通过将双引号添加到您的交替中来允许双引号:
([\"'])(?:\\\1|\1\1|.)*?\1
然而,由于您已经使量词变得懒惰,所以这仍然不太有效。最好明确指出引号之间不允许使用未转义的引号:
([\"'])(?:\\\1|\1\1|(?!\1).)*\1
看到它regex101 http://regex101.com/r/yE6cQ0.
解释:
([\"']) # Match a quote, remember which kind in group 1.
(?: # Start non-capturing group:
\\\1 # Either match a backslash-escaped quote
| # or
\1\1 # a doubled quote
| # or
(?!\1) # (as long as it's not a quote)
. # any character.
)* # Repeat as necessary
\1 # Match a corresponding quote
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)