为了账号安全,请及时绑定邮箱和手机立即绑定

Re模块中的Python正则表达式是否支持单词边界(\b)?

Re模块中的Python正则表达式是否支持单词边界(\b)?

Re模块中的Python正则表达式是否支持单词边界(\b)?在尝试更多地了解正则表达式的同时,一个教程建议您可以使用\b匹配一个词的边界。但是,Python解释器中的以下代码段不像预期的那样工作:>>> x = 'one two three' >>> y = re.search("\btwo\b", x)如果匹配的话,它应该是一个Match对象,但是它是None.是\bPython中不支持的表达式,还是我使用它的错误?
查看完整描述

3 回答

?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

你为什么不试试

word = 'two're.compile(r'\b%s\b' % word, re.I)

产出:

>>> word = 'two'>>> k = re.compile(r'\b%s\b' % word, re.I)>>> x = 'one two three'>>> y = k.search( x)>>> y<_sre.SRE_Match object at 0x100418850>

还忘了提到,您应该在代码中使用原始字符串。

>>> x = 'one two three'>>> y = re.search(r"\btwo\b", x)>>> y<_sre.SRE_Match object at 0x100418a58>>>>


查看完整回答
反对 回复 2019-07-03
?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

这将起作用:re.search(r"\btwo\b", x)

当你写"\b"在Python中,它只有一个字符:"\x08"..要么像这样避开反斜杠:

"\\b"

或者编写如下原始字符串:

r"\b"


查看完整回答
反对 回复 2019-07-03
?
青春有我

TA贡献1784条经验 获得超8个赞

只是为了明确地解释为什么 re.search("\btwo\b", x)不起作用,是因为\b在Python中,字符串是Backspace字符的缩写。

print("foo\bbar")fobar

所以模式"\btwo\b"正在寻找一个后置空间,然后是two,后面是另一个后台空间,您在其中搜索的字符串(x = 'one two three')没有。

允许re.search(或compile)解释序列\b作为一个单词边界,可以避开反斜杠("\\btwo\\b")或使用原始字符串创建模式(r"\btwo\b").


查看完整回答
反对 回复 2019-07-03
  • 3 回答
  • 0 关注
  • 1691 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信