例如:"\t\t\v"
和 "\f"
应匹配。 "\t\t\t"
、""
和 "\f\f\f"
不应匹配。
所以基本上,我想排除第一个捕获的字符,类似于 (\s)\1*[^\S\1]+\s*
。但这是行不通的,因为我们无法将捕获的组放入 [^]
中。
我怎样才能实现这个目标?
最佳答案
我不确定我是否正确理解了您的要求,但您可以尝试使用否定的 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
匹配,而 不匹配。如果这不是一个错误,您能澄清一下吗?
关于python - 如何匹配异构的空白字符序列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55816222/