【发布时间】:2013-10-01 12:00:00
【问题描述】:
假设我想转义所有嵌套在双引号内的双引号(图片是 CSV 或其他东西):
"Jim", "Smythe", "Favorite Quote: "This is my favorite quote.""
我想隔离This is my favorite quote. 周围的内部引号,然后用\ 转义它们。但是我在编写一个正则表达式来匹配内部引号时遇到了麻烦。所以,我想要的结果是:
"Jim", "Smythe", "Favorite Quote: "This is my favorite quote.""
^^ ^^
Start Match Here || || End Match Here
Start Capture Here | End Capture Here |
Match: "This is my favorite quote."
Capture: This is my favorite quote.
然后我可以轻松地使用模式\"$1\" 转义引号以获得最终结果:
"Jim", "Smythe", "Favorite Quote: \"This is my favorite quote.\""
【问题讨论】:
-
通常你应该在把它放到行中之前转义这个值。如果您事后这样做,您只能处理可以确定它是报价而不是值结尾的情况。例如,如果引号是逗号,则无法将其与值分隔符区分开来。
-
我的第一个猜测是,由于这个问题中指定的原因,这是不可能的 - stackoverflow.com/questions/133601/…
-
类似这样的东西:
/"(?:[^\\"]|\\.)*"/? -
@Jerry 我没有得到任何合理的尝试,不确定是否可以完成(至少不可靠)。
-
除非外部字符串有一些可定义的格式(如 CSV)不能出现在内部字符串中(转义逗号不能出现在内部字符串中吗?),这是不可能的,因为你无法区分
"和"。