【发布时间】:2014-08-07 08:35:35
【问题描述】:
我正在尝试将 match 正则表达式转换为 unicode。它应该只拾取括号内的数字。图案:
^.*?\([^\d]*(\d+)[^\d]*\).*$
但它不适用于这个 unicode:
152.6\xa0MiB\xa0(160008742\xa0Bytes)
unicode标志还不够吗?
PS:预计小组赛是160008742
【问题讨论】:
-
re.compile(r"^.*?\([^\d]*(\d+)[^\d]*\).*$", re.UNICODE).match(u"152.6\xa0MiB\xa0(160008742\xa0Bytes)")匹配成功(Python 2.7 和 3.3)。 -
@ArminRigo 我仍然得到
>>> re.compile(r"^.*?\([^\d]*(\d+)[^\d]*\).*$", re.UNICODE).match(u"152.6\xa0MiB\xa0(160008742\xa0Bytes)").group()u'152.6\xa0MiB\xa0(160008742\xa0Bytes)' -
@ArminRigo 我补充说它应该只匹配括号内的数字
-
@Tjorriemorrie,除非
\xA0是字面上的不间断空格,否则括号内有两个数字。你能澄清一下你要匹配的字符串吗? -
@MikeSamuel @ArminRigo 是的,抱歉,这是一个空格。我期待
160008742