【问题标题】:Using end of word mark with unicode in regular expressions in Python在 Python 的正则表达式中使用带有 unicode 的词尾标记
【发布时间】:2011-03-04 01:21:41
【问题描述】:

以下在空闲时匹配,但在模块文件中的方法中运行时不匹配:

import re
re.search('\\bשלום\\b','שלום עולם',re.UNICODE)

虽然以下两种情况都匹配:

import re
re.search('שלום','שלום עולם',re.UNICODE)

(请注意,stackoverflow 错误地切换了上行中的第一项和第二项,因为这是一种从右到左的语言)

如何使 py 文件中的第一个代码匹配?

更新:我应该为第一段编写的是它在 Idle 中匹配,但在使用 PyDev 在 Eclipse 控制台中运行时不匹配。

【问题讨论】:

  • 第一个 re.search() 在 IDLE 或模块中对我不起作用。
  • 你试过re.LOCALE而不是UNICODE吗?我会安装语言环境,但我有点担心我永远不会把它切换回来。题外话:有人说谷歌翻译太过分了apt-get install user-he; hebrew-settings变成apt-get install user-en; english-settings这令人印象深刻,但错误;)
  • @Lee,第一个对我来说也不是,尽管第二个是。我提到这一点是因为我们可能都在一个非他的语言环境中,而且很多事情都依赖于它。奇怪的是,它的粘贴顺序是正确的。
  • 感谢大家检查。我认为我没有专门针对希伯来语设置任何内容,只是针对 unicode。 Idle\Options\Configure IDLE\General\Default Source Encoding 设置为 UTF-8,在 C:\Python26\Lib\site.py 我有 encoding = "utf-8" 而不是 encoding = "ascii"。还要确保您使用的是支持 unicode 的字体,例如 Courier 或 Courier New

标签: python regex unicode right-to-left


【解决方案1】:

当我使用 unicode 字符串时似乎对我有用:

# -*- coding: utf-8 -*-

import re
match = re.search(u'\\bשלום\\b', u'שלום עולם', re.U)

查看实际操作:http://codepad.org/xWz5cZj5

【讨论】:

  • # coding=utf-8 表示法是否与# -*- coding: utf-8 -*- 相同?我问是因为这是我第一次看到这样的情况。如果不是,请更正。
  • @ΤZΩΤZΙΟΥ - 很抱歉让你失望了,但我不知道。 :| 实际上,我不懂任何 Python,并且从 Google 和文档中学到了一切。我做了那件奇怪的事情,因为我想学习 Python(有一天),而且我知道希伯来语。
  • 这里没有失望,别担心;对于不了解 Python 的人来说,你做得很好 :) 可能有一种我不知道的替代表示法。我为你更正了。
  • @ΤZΩΤZΙΟΥ - 没问题。我发布的代码没有它就无法工作,但我猜 codepad.org 不是一个准确的表示。谢谢!
  • @ΤZΩΤZΙΟΥ:见docs.python.org/reference/…
猜你喜欢
  • 2012-03-24
  • 2011-09-06
  • 1970-01-01
  • 2010-09-28
  • 1970-01-01
  • 1970-01-01
  • 2015-03-30
  • 1970-01-01
  • 2018-03-27
相关资源
最近更新 更多