如何匹配空白字符的异类序列?

时间:2019-04-23 17:07:39

标签: python regex

例如:"\t\t \v"" \f"应该匹配。 "\t\t\t"" ""\f\f\f"不匹配。

所以基本上,我想排除第一个捕获的字符,类似于这个(\s)\1*[^\S\1]+\s*。但这是行不通的,因为我们无法将捕获的组放在[^]中。

我该如何实现?

1 个答案:

答案 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不匹配,为什么您会期望匹配。如果那不是一个错误,可以请您澄清一下吗?