Python正则表达式中匹配括号

3

我有一个类似于

store(s)

的字符串,以 "1 store(s)" 结尾。 我想使用 Python 正则表达式进行匹配。

我尝试了像 re.match('store\(s\)$', text) 这样的代码,但它没有起作用。

这是我尝试过的代码:

import re

s = '1 store(s)'
if re.match('store\(s\)$', s):
    print('match')

2
其实它确实有效。 你为什么认为它无效? - Fred Foo
编辑有什么问题吗? - Jakub Hampl
@Jakub Hampl:更改正则表达式和问题的重要部分并不能帮助解决问题。 - poke
哇,我完全错过了那个。我想我太专注于使它基线可理解了。 - Jakub Hampl
@larsmans 试试我粘贴的那段代码,它对我来说不起作用。 - Jijoy
3个回答

6
作为对您评论的更直接或更间接的回答

Try this

import re
s = '1 stores(s)'
if re.match('store\(s\)$',s):
    print('match')
解决方案是使用re.search而不是re.match,因为后者试图将整个字符串与正则表达式匹配,而前者只尝试查找一个子字符串,在其中找到与表达式匹配的内容。

还需要在正则表达式模式字符串前添加'r'前缀。 - martineau
这不是引用。原帖作者从未说过“试试这个”,他的代码也没有s = '1 stores(s)'。我建议你复制粘贴引用……或者打字时更加小心,否则你的回答会很难理解。 - martineau
@martineau:不,OP最初是将其作为评论写的,因此出现了“回复您的评论”。然后,实际消息稍后被放在问题中,评论被删除。这并不改变它仍然是引用(而且不是我的文本)的事实... - poke

1
Python提供了两种基于正则表达式的原始操作:match仅在字符串开头检查匹配,而search在字符串任何位置检查匹配(这是Perl默认情况下的行为)。
直接从文档中获取,但它确实经常出现。

0

你考虑过 re.match('(.*)store\(s\)$',text) 吗?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接