【发布时间】:2020-09-22 20:31:09
【问题描述】:
我想使用 re.search 来提取第一组非空白字符。我有以下伪脚本可以重现我的问题:
#!/usr/bin/env python2.7
import re
line = "STARC-1.1.1.5 ConsCase WARNING Warning"
m = re.search('^[^\S]*?',line)
if m:
print m.group(0)
似乎打印的是空白而不是 STARC-1.1.1.5
据我了解,这个正则表达式是说: 在行首,找一组非空白字符,不要贪心
我很确定这会起作用,documentation 说我可以使用 /S 来匹配 [] 中的空格,所以我不确定问题出在哪里。
现在,我知道,我知道这可能看起来很奇怪,为什么我不使用其他函数来执行此操作?好吧,给猫剥皮的方法不止一种,而且我仍然掌握 Python 中正则表达式的窍门,所以我想知道如何使用 re.search 以这种方式提取该字段。
【问题讨论】:
-
这里还有一个 re.split("\s*", line)[0]
-
@melpomene 是贪婪的。它不会在此处拆分为空字符串
-
@e4c5 我试过了,得到了
FutureWarning: split() requires a non-empty pattern match.和\s+我没有收到警告。 -
@melpomene 我也用 ipython 在 python 2.7 中尝试过,得到了想要的结果
-
我的测试是 3.5.2。在这两种情况下我也都得到了想要的结果,但只有
\s+没有在re.py:203中触发警告。
标签: python regex python-2.7 whitespace