【问题标题】:How to apply regex to unicode如何将正则表达式应用于 unicode
【发布时间】:2014-08-07 08:35:35
【问题描述】:

我正在尝试将 match 正则表达式转换为 unicode。它应该只拾取括号内的数字。图案:

^.*?\([^\d]*(\d+)[^\d]*\).*$

但它不适用于这个 unicode:

152.6\xa0MiB\xa0(160008742\xa0Bytes)

Reference

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

标签: python regex unicode


【解决方案1】:

您将.group().group(1) 混淆了。后者是您正在寻找的。前者返回匹配的整个文本,如文档所述。

【讨论】:

  • 去图;我正在使用.group()[1]
猜你喜欢
  • 2016-04-22
  • 1970-01-01
  • 1970-01-01
  • 2010-09-06
  • 1970-01-01
  • 2012-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多