【发布时间】:2016-03-31 14:52:24
【问题描述】:
有人可以解释一下正则表达式的这种行为吗:
当我用其他一些 Unicode 字符替换 Unicode 字符串的最后两个字符时,它可以在字符串末尾使用行边界 ($) 正常工作,但如果我在方括号中指定 $,则会产生意外结果[$].
此外,单词边界\b 给出了意想不到的结果,并且令人惊讶的是\B匹配了\b 应该匹配的内容。
>>> line = u'\u0627\u062f\u0646\u06cc\u0670'
>>> re.sub(ur'\u06cc\u0670$', ur'\u0627', line) #works fine
u'\u0627\u062f\u0646\u0627'
>>> re.sub(ur'\u06cc\u0670[$]', ur'\u0627', line) #unexpected result
u'\u0627\u062f\u0646\u06cc\u0670'
>>> re.sub(ur'\u06cc\u0670[$]', ur'\u0627', line, re.U) #still not working
u'\u0627\u062f\u0646\u06cc\u0670'
>>> re.sub(ur'\u06cc\u0670\b', ur'\u0627', line, re.U) #unexpected
u'\u0627\u062f\u0646\u06cc\u0670'
>>> re.sub(ur'\u06cc\u0670\B', ur'\u0627', line, re.U) #unexpected
u'\u0627\u062f\u0646\u0627'
【问题讨论】:
标签: regex string python-2.7 unicode