蟒蛇正则表达式:如何根据字母,数字和标点符号
我在学习使用Python 2.7蟒蛇正则表达式:如何根据字母,数字和标点符号
正则表达式给出一个句子串分成不同的组(假设为小写字母和ASCII)如:
input = 'i like: a, b, 007 and c!!'
如何将令牌化输入字符串转换成
['i', 'like', ':', 'a', ',', 'b', ',', '007', 'and', 'c', '!!']
我可以写的自动机和代码在C++的转换矩阵,但我想这样做在python
我无法想出一个正则表达式,可以一次匹配这些不同类别的字母,数字和标点符号。
我已经看到了一些stackoverflow的帖子here和here,但不完全按照他们的方法。
我已经尝试了一段时间了,现在我很感激你的帮助。
PS:这不是一门功课的问题
>>> 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}]是做什么的?我无法把头围住它。 – 2012-04-21 15:36:34
将'0th'参数替换为标点符号的格式。来自标点符号的任何信件。 – jamylak 2012-04-21 15:37:07
你的答案很优雅。一个小细节 - 我希望分别将字母,数字和标点符号分组,而\ w将'_'也作为单词字符。我想用您的解决方案中的[a-z0-9]替换\ w应该可以工作。我正在接受您的答案。感谢您的回复。 – user1290793 2012-04-21 15:49:30
使用're'模块 – Shep 2012-04-21 15:29:31
我已经使用're'模块,并且可以分别将 [az] +,[0-9] +,[^ a-z0-9 \ s] +组合成一个正则表达式,输出 – user1290793 2012-04-21 15:31:25