蟒蛇正则表达式:如何根据字母,数字和标点符号

问题描述:

我在学习使用Python 2.7蟒蛇正则表达式:如何根据字母,数字和标点符号

正则表达式给出一个句子串分成不同的组(假设为小写字母和ASCII)如:

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

如何将令牌化输入字符串转换成

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

我可以写的自动机和代码在C++的转换矩阵,但我想这样做在python

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

我已经看到了一些stackoverflow的帖子herehere,但不完全按照他们的方法。

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

PS:这不是一门功课的问题

+0

使用're'模块 – Shep 2012-04-21 15:29:31

+0

我已经使用're'模块,并且可以分别将 [az] +,[0-9] +,[^ a-z0-9 \ s] +组合成一个正则表达式,输出 – user1290793 2012-04-21 15:31:25

>>> 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', '!!'] 
+0

在第一个示例中,[{0}]是做什么的?我无法把头围住它。 – 2012-04-21 15:36:34

+0

将'0th'参数替换为标点符号的格式。来自标点符号的任何信件。 – jamylak 2012-04-21 15:37:07

+0

你的答案很优雅。一个小细节 - 我希望分别将字母,数字和标点符号分组,而\ w将'_'也作为单词字符。我想用您的解决方案中的[a-z0-9]替换\ w应该可以工作。我正在接受您的答案。感谢您的回复。 – user1290793 2012-04-21 15:49:30