python中的通配符匹配

时间:2018-06-19 10:20:31

标签: python regex

我在python中有一个字符串

x =  "orange".

程序接受输入字符串。如果输入字符串与x的通配符模式匹配,则执行一些操作。 模式是

pattern = "#.orange.*" 

#(hash) - 可以替换零个或多个单词。

*(星级) - 可以替代一个单词。

所以,如果我的输入字符串是" quick.orange.rabbit",那么它应该匹配。任何人都可以帮我在python中如何做到这一点? 我试过了 -

import re
input_str = input("enter string")
pattern = #.orange.*
p = re.compile(pattern)
if p.match(input_str):
   # do something

提前致谢。

1 个答案:

答案 0 :(得分:1)

我不确定我是否正确理解正则表达式的想法,但如果我是正确的,你想要匹配以下内容:
(零个或多个单词).orange。(恰好一个字)

现在我不知道哈希中的单词是用空格,句点分隔还是仅仅是单词之后的单词,但是这里有以下几种情况:

以空格分隔的哈希值

pattern = r"(?P<hash>(\w+|\s)*)\.(?P<orange>orange)\.(?P<star>\w+)"

以句号分隔的哈希词

pattern = r"(?P<hash>(\w+|\.)*)\.(?P<orange>orange)\.(?P<star>\w+)"

在彼此之后散布单词

pattern = r"(?P<hash>(\w*))\.(?P<orange>orange)\.(?P<star>\w+)"

如果您不想使用(?P&lt;&gt;)语法,您也可以执行以下操作

pattern = r"(\w+|\s)*\.orange\.\w+"

哪个匹配你的字符串,并告诉你它是否匹配,但你不能

match.group('hash')

获取哈希词。