Python 正则表达式与 Unicode 字符

3 投票
3 回答
518 浏览
提问于 2025-04-15 11:21

我需要一个正则表达式,可以解析类似下面的内容:

"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})$'

撰写回答