python - 如何匹配异构的空白字符序列?

标签 python regex

例如:"\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/

相关文章:

python - 如何递归字典并动态更新值以便以后可以引用它们?

python - 尝试使用 github3.py 创建文件时出现 "InvalidSchema"

python - 为什么 "assert 211 == 211"失败了?

Python - 围绕中心(x,y)位置生成随机顶点

regex - 采访 : Machine coding/regex (Better alternative to my solution)

python - findall 对字符串的问题(预期的字符串或类似字节的对象)

java - 在替换之前如何对replaceAll中的正则表达式部分进行计算?

python - 是否可以在不同线程上为不同图像运行 knnMatch?

javascript - Regex exec 只返回第一场比赛

python - 在正则表达式中如何将字母数字字符串的模式与它们之前/之后的空格或标点符号匹配