【发布时间】:2016-08-13 10:14:48
【问题描述】:
我想构建一个正则表达式来捕获
Fee fie foe foo!
但是当有多个空格时:
Fee fie foe foo!
仅捕获“Fee fie”
我的正则表达式看起来像这样:
words_re = re.compile(r"\w[-\w .,!]*")
您可以看到捕获以字母数字开头的任何序列,然后是字母数字、空格和一些选定的标点符号的任意组合。我只是想一次将其限制为一个空间。
或者,返回分隔空白跨度的 string.split() 变体也可以为我做。
我得到的最接近的是:
words_re = re.compile(r"\w[-\w.,!]*|\s+")
l = words_re.findall(s)
但我需要在返回的列表中搜索仅包含单空格分隔符的子列表,然后从中重建字符串。
我的一个想法是从上面的表达式中取出结果,然后用string.split(" ") 进一步拆分它,将它分成两个空格分隔的子组,但是三个空格的情况呢,等等?
【问题讨论】:
-
所以你想丢弃两个空格子字符串之后的任何东西,如果存在的话?
-
这是一个很好的方法
\S+(?:\s\S+)+这是在两个或多个空格上拆分的逆操作。我不会想太多。 -
@nephtes,我会在下一次循环中的双空格后回来处理部分。
-
Meta:感谢大家给我指点regex101.com——我不知道有这么棒的资源存在。