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