【发布时间】:2012-08-31 13:50:10
【问题描述】:
我正在尝试构建一个匹配 @"hello""world" 等转义字符串的正则表达式。到目前为止我有(忽略空格):
@(?=")" #at sign if followed by double quote then double quote
(?> #atomic
""
|
[^"]
)*
"
问题是无效的(因为它没有关闭)字符串@""" 匹配为@""。我认为当我使用原子分组又名非回溯子表达式时,(?>""|[^"])* 将匹配@""" 的最后两个双引号(因为左边的选项可以匹配两个双引号),然后根据需要导致整体匹配失败(因为正则表达式的最后一个" 不存在)但该组似乎不够贪婪(尽管有贪婪的量词* 和原子分组)并且仍然回溯到第一个" 之后的点正则表达式一旦发现正则表达式失败。一种解决方法是将(?!") 放在正则表达式的末尾,但我想知道为什么它不适用于原子分组。
【问题讨论】:
-
您想要什么...无法理解您面临的问题...
-
我想知道为什么原子分组在这种情况下不起作用,尽管我理解它应该。
标签: regex regex-greedy regex-group