例如:"\t\t \v"
和" \f"
应该匹配。 "\t\t\t"
," "
和"\f\f\f"
不匹配。
所以基本上,我想排除第一个捕获的字符,类似于这个(\s)\1*[^\S\1]+\s*
。但这是行不通的,因为我们无法将捕获的组放在[^]
中。
我该如何实现?
答案 0 :(得分:2)
我不确定我是否正确理解了您的要求,但是您可以尝试使用否定的Lookahead:
(\s)\1*(?!\1)\s+
这样对您有用吗?
这是一个Python示例:
regex = r"(\s)\1*(?!\1)\s+"
inputs = ["\t\t \v", "\f", "\t\t\t", " ", "\f\f\f", "\f \f"]
for s in inputs:
if re.match(regex, s):
print "Found a match."
else:
print ("No matches!")
输出:
Found a match.
No matches!
No matches!
No matches!
No matches!
Found a match.
我不确定如果\f
不匹配,为什么您会期望匹配。如果那不是一个错误,可以请您澄清一下吗?