【问题标题】:Word boundary to use in unicode text for Python regex在 Python 正则表达式的 unicode 文本中使用的单词边界
【发布时间】:2013-10-22 22:18:24
【问题描述】:

我想在正则表达式中使用单词边界来匹配一些 unicode 文本。 Unicode 字母在 Python 正则表达式中被检测为单词边界,如下所示:

>>> re.search(r"\by\b","üyü")
<_sre.SRE_Match object at 0x02819E58>

>>> re.search(r"\by\b","ğyğ")
<_sre.SRE_Match object at 0x028250C8>

>>> re.search(r"\by\b","uyu")
>>>

我应该怎么做才能使单词边界符号与unicode字母不匹配?

【问题讨论】:

    标签: python regex unicode


    【解决方案1】:

    使用re.UNICODE:

    >>> re.search(r"\by\b","üyü", re.UNICODE)
    >>> 
    

    【讨论】:

      【解决方案2】:

      您可以通过以下方式使用它:

      re.search(r'(?u)\by\b', 'üyü')
      

      要熟悉标志,请尝试以下操作:(?iLmsux)

      作为一个很好的阅读检查核心 Python 应用程序编程第 3 版。有一个关于正则表达式的好章节。

      【讨论】:

        【解决方案3】:
        #!/usr/bin/python
        # -*- coding: utf-8 -*-
        
        s = ur"abcd ААБВ"
        import re
        rx1 = re.compile(ur"(?u)АБВ")
        rx2 = re.compile(ur"(?u)АБВ\b")
        rx3 = re.compile(ur"(?u)\bАБВ\b")
        print rx1.findall(s)
        print rx2.findall(s)
        print rx3.findall(s)
        
        print re.search(ur'(?u)ривет\b', ur'Привет')
        print re.search(ur'(?u)\bривет\b', ur'Привет')
        

        输出:

        [u'\u0410\u0411\u0412']
        [u'\u0410\u0411\u0412']
        []
        <_sre.SRE_Match object at 0x01F056B0>
        None
        

        【讨论】:

          猜你喜欢
          • 2014-06-07
          • 1970-01-01
          • 1970-01-01
          • 2021-06-09
          • 2018-07-09
          • 1970-01-01
          • 1970-01-01
          • 2011-04-14
          • 1970-01-01
          相关资源
          最近更新 更多