Python 正则表达式与 Unicode 字符
我需要一个正则表达式,可以解析类似下面的内容:
"2 * 240pin"
这里的 * 可以是普通的星号、unicode字符 \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
3 个回答
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')
>>>
2
在编程中,有时候我们需要处理一些数据,这些数据可能来自不同的地方,比如用户输入、文件或者网络请求。为了让程序能够理解这些数据,我们通常需要把它们转换成程序可以使用的格式。
例如,如果你从一个网页上获取了一些信息,这些信息可能是以文本的形式存在的。为了让程序能够处理这些文本,我们可能需要把它们转换成数字、日期或者其他类型的数据。这个过程就叫做“数据转换”。
数据转换有很多种方法,具体使用哪种方法取决于你要处理的数据类型和你想要实现的功能。简单来说,就是把数据从一种形式变成另一种形式,以便程序能够更好地理解和使用它。
在编程中,理解如何进行数据转换是非常重要的,因为这会影响到程序的运行效果和效率。
multiple= r'^(\d+)\s[xX\*\\u00d7]\s?(\d+)(\w{2,4})$'
2
你需要对 *
进行转义,因为在你使用的上下文中,它是一个量词。不过你也可以使用字符类。所以试试这个:
ur'^(\d+)\s?[x*\u00d7]\s?(\d+)(\w{2,4})$'