【发布时间】:2013-12-08 07:38:25
【问题描述】:
现在我有一个模式列表:
patterns = ['php', 'java', 'c++']
我想在另一个字符串中匹配它,比如 r'c++ Primer'。 我想用python re模块来做,但问题是,如果我用:
for pattern in patterns:
re.findall(pattern, r'php php java java c++ c++')
我会得到一个错误,因为'+'在正则表达式中有特殊含义。
那么在这种情况下我该如何解决c++ 或c* 之类的问题?
请注意,我有很多要匹配的模式,所以我不想手动将 c++ 之类的所有内容转换为 c\+\+。
感谢您的关注。
【问题讨论】:
-
对问题进行了编辑,澄清了
\+\+不是提问者想要的。但是您应该使用“c++”进行 Ctrl+H 搜索并替换为“c\+\+”。 -
对不起,Ctrl+H 搜索是什么意思?
-
@Warbean 他的意思是,在编辑器中搜索和替换。
-
具有相关权力的人可以接受我对问题的编辑吗?他的意思是他不想改成“c\+\+”。
-
根据您的操作,常规字符串方法可能就足够了,因此不必担心生成有效的正则表达式模式,例如:
for p in patterns: print "php php java java c++ c++".count(p)将显示字符串出现的次数,或for p in patterns: print p in "php php java ..."将显示字符串是否包含模式