我正在尝试以下方法:
.+\?[^\?].+\?
也就是说,匹配所有内容直到“?”,然后,如果没有其他“?”之后,匹配所有内容直到另一个“?”。我猜它不起作用,因为第一个。+已匹配整个字符串。
答案 0 :(得分:4)
您的描述不准确,但这是我认为您需要正则表达式来满足的规则:
这实际上很简单。
[^?]*\?[^?]+\?
请注意,这将匹配较大字符串的子字符串。如果您需要确保整个字符串与此字符串完全匹配,请输入^
和$
个锚点:
^[^?]*\?[^?]+\?$
说明:
^
字符串的开头。在多行上下文中,这也匹配行的开头,但您可能不在多行上下文中。
[^?]
匹配任何非文字字符“?
”。
*
匹配前一个标记的零个或多个。
\?
匹配文字“?
”。
[^?]
匹配任何非文字字符“?
”。
+
匹配前一个标记中的一个或多个。这样可以确保您不能连续使用两个“?
”。
\?
匹配文字“?
”。
$
匹配字符串的结尾(或多行上下文中的行尾)。
注意:我在第一个'?
'之前假定零或更多非'?
'。这将匹配?abc?
之类的内容。如果这是非法的,请将第一个*
更改为+
。