首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么这个字符串与模式不匹配?

为什么这个字符串与模式不匹配?
EN

Stack Overflow用户
提问于 2015-10-23 21:06:51
回答 1查看 2.1K关注 0票数 0

在下面的示例中,我期望单词'789'与我的模式'\b[7][8-9]{2}\b'匹配:

代码语言:javascript
运行
复制
def test_4(self):
    text = 'asdf 2345 gfdf 44 dfg 79878 dsfg 78998 sdfg 789 7989 '
    pattern = '\b[7][8-9]{2}\b'
    match = re.search(pattern, text)
    if match:
        print(pattern)
        print(match.group())

为什么文本与模式不匹配?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-23 21:18:53

您在模式字符串中的\b正在被Python解释为ASCII字符('\x08'),然后regex引擎才能看到它们并将它们解释为一个单词中断。为了停止第一个解释,使用一个" raw“字符串,在开头的引号前加上一个r (您可以用一个额外的反斜杠来转义反斜杠,但这通常比原始字符串更丑,也更不容易理解):

代码语言:javascript
运行
复制
r'\b[7][8-9]{2}\b'

注意,7周围的括号和[8-9]中的破折号是不必要的(您可以只使用r'\b7[89]{2}\b')。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33311402

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档