我正在尝试以下操作:
.+\?[^\?].+\?也就是说,匹配所有内容直到"?",那么,如果没有其他"?“在此之后,匹配所有内容,直到另一个"?“。我猜它不能工作,因为第一个.+已经匹配了整个字符串。
发布于 2012-08-18 07:48:57
您的描述并不精确,但我假设您需要您的正则表达式来满足以下规则:
这实际上非常简单。
[^?]*\?[^?]+\?请注意,这将匹配较大字符串的子字符串。如果需要确保整个字符串与此完全匹配,则抛出^和$锚点:
^[^?]*\?[^?]+\?$解释:
^字符串的开头。在多行上下文中,这也与行的开头匹配,但您可能不在多行上下文中。
[^?]匹配任何不是原义字符'?'.的内容
*匹配零个或多个以前的令牌。
\?匹配文字'?'.
[^?]匹配任何不是原义字符'?'.的内容
+匹配一个或多个以前的令牌。这确保您不能在一行中有两个'?‘。
\?匹配文字'?'.
$匹配字符串的结尾(或多行上下文中的行尾)。
注意:我假设在第一个'?‘之前有零个或多个非’?‘。这将与?abc?之类的代码相匹配。如果这是非法的,请将第一个*更改为+。
https://stackoverflow.com/questions/12014432
复制相似问题