python正则表达式:如何根据字母,数字和标点符号将字符串拆分为不同的组

时间:2012-04-21 15:25:19

标签: python regex

我正在学习使用python 2.7的正则表达式

给出一个句子(假设小写和ascii),例如:

input = 'i like: a, b, 007 and c!!'

如何将输入字符串标记为

['i', 'like', ':', 'a', ',', 'b', ',', '007', 'and', 'c', '!!']

我可以编写自动机并用C ++编写转换矩阵代码,但我想在python中执行此操作

我无法想出能够一次性匹配这些不同类别的字母,数字和标点符号的正则表达式。

我看过几个stackoverflow帖子herehere,但不太了解他们的方法。

我已经尝试了一段时间了,我很感激你的帮助。

P.S:这不是一个家庭作业问题

1 个答案:

答案 0 :(得分:3)

>>> from string import punctuation
>>> text = 'i like: a, b, 007 and c!!'
>>> re.findall('\w+|[{0}]+'.format(punctuation),text)
['i', 'like', ':', 'a', ',', 'b', ',', '007', 'and', 'c', '!!']

这也有效,但如果找不到字母数字字符,则会找到任何非空白字符

>>> re.findall('\w+|\S+',text)
['i', 'like', ':', 'a', ',', 'b', ',', '007', 'and', 'c', '!!']