我正在尝试使用Python v2(特别是2.7.5)和're'模块进行正则表达式匹配。我的问题是,对于我的应用程序,我需要匹配'空格'符号(即十六进制的0x20)和仅作为匹配字符串的一部分的符号。我尝试的第一件事是'\ s',但这不起作用,因为它也匹配换行符,返回,制表符和表单。
最终要求是匹配一个字符串,其中前三个字符是数字('\ d'),有一个逗号(','),然后八个符号是数字('\ d')或空格(???)。
有关如何做到这一点的任何建议?我已经尝试过了......
C:\Users\jlaird>python
Python 2.7.5 (default, May 15 2013, 22:43:36) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import re
>>> goodstring = '333,000000 2'
>>> badstring = '333,000000\t2'
>>> print badstring
333,000000 2
>>> sRegex = '\d\d\d,[\s\d][\s\d][\s\d][\s\d][\s\d][\s\d][\s\d][\s\d]'
>>> cRegex = re.compile(sRegex)
>>> cRegex.match(goodstring)
<_sre.SRE_Match object at 0x023A7A30>
>>> cRegex.match(badstring)
<_sre.SRE_Match object at 0x025E82C0>
>>>
我希望'badstring'评估为None,因为它有制表符而不是空格。我怎么能这样做?
答案 0 :(得分:1)
谢谢jonrsharpe ......工作。我制作复杂的东西总是很简单。遗憾...
>>> sRegex = '\d\d\d,[ \d][ \d][ \d][ \d][ \d][ \d][ \d][ \d]'
>>> cRegex = re.compile(sRegex)
>>> cRegex.match(goodstring)
<_sre.SRE_Match object at 0x023A7A30>
>>> cRegex.match(badstring)
>>>