单词不是以数字开头的

时间:2010-04-28 13:59:21

标签: python regex

我有一个字符串“one two 9three 52eight four”,所以我只想得到“一二四”,因为“3”以“9”开头,“8”以“52”开头。

我试过了:

"(?!\d)\w+"

但它仍然是“三”和“八”。我不想要它。

4 个答案:

答案 0 :(得分:4)

尝试

\b[a-zA-Z]\w*

答案 1 :(得分:2)

那是因为\w包含了数字。你需要做的是:

>>> s = "one two 9three 52eight four"
>>> import re
>>> re.findall(r'\b[a-z]+\b', s, re.I)
['one', 'two', 'four']

此外,您正在使用(?!...)的内容称为负面预测,而您可能意味着负面的后瞻(?<!...),由于上述问题,这当然仍会失败。< / p>

eta :那么你只需要一个单词边框:

>>> re.findall(r'\b(?!\d)\w+', s)
['one', 'two', 'four']

答案 2 :(得分:1)

对我来说很好:

import re

l = "one two 9three 52eight four".split()
c = re.compile("(?!\d)\w+")

m = [w for w in l if re.match(c, w)]
print m

打印:

['one', 'two', 'four']

答案 3 :(得分:0)

regexp可能有点矫枉过正。

In [3]: [word for word in eg.split(' ') if not word[0].isdigit()]
Out[3]: ['one', 'two', 'four']