我需要一个可以解析类似 -
的reg exp"2 * 240pin"
其中*可以是常规星形或unicode char \ u00d7,也可以只是x。这就是我所拥有的,但它不起作用:
multiple= r'^(\d+)\s?x|*|\\u00d7\s?(\d+)(\w{2,4})$'
multiplepat= re.compile(multiple, re.I)
print multiplepat.search(u'1 X 240pin').groups()
返回
multiplepat= re.compile(multiple, re.I)
File "C:\Python26\lib\re.py", line 188, in compile
return _compile(pattern, flags)
File "C:\Python26\lib\re.py", line 243, in _compile
raise error, v # invalid expression
error: nothing to repeat
答案 0 :(得分:2)
multiple= r'^(\d+)\s[xX\*\\u00d7]\s?(\d+)(\w{2,4})$'
答案 1 :(得分:2)
您需要转义*
,因为它是您使用它的上下文中的量词。但是你也可以使用一个字符类。所以试试这个:
ur'^(\d+)\s?[x*\u00d7]\s?(\d+)(\w{2,4})$'
答案 2 :(得分:2)
[]
用于表示一组字符。可以单独列出字符,也可以通过给出两个字符并用“ - ”分隔来表示一系列字符。 特殊字符在集合中无效。
>>> m= u'^(\\d+)\\s?[x*\u00d7]\\s?(\\d+)(\\w{2,4})$'
>>> mpat=re.compile(m)
>>> mpat.search(u'1 * 240pin').groups()
(u'1', u'240', u'pin')
>>>