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