python中的通配符匹配

python中的通配符匹配,python,regex,Python,Regex,我有一个python字符串 x = "orange". 程序接受一个输入字符串。如果输入字符串与x的通配符模式匹配,则我执行一些操作。 模式是 pattern = "#.orange.*" 哈希-可以代替零个或多个单词 *星-可以代替一个单词 所以,如果我的输入字符串是quick.orange.rabbit,那么它应该匹配。有人能帮我用python怎么做吗?? 我试过- import re input_str = input("enter string") pattern = #.ora

我有一个python字符串

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

pattern = "#.orange.*" 
哈希-可以代替零个或多个单词

*星-可以代替一个单词

所以,如果我的输入字符串是quick.orange.rabbit,那么它应该匹配。有人能帮我用python怎么做吗?? 我试过-

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

提前感谢。

不确定我是否正确理解了正则表达式的概念,但如果我是正确的,您希望匹配以下内容: 零个或多个单词。橙色。仅一个单词

现在我不知道散列中的单词是用空格、句点分隔的,还是仅仅是紧跟在后面的单词,但以下是几种情况:

用空格分隔的散列字

它将与您的字符串匹配,并告诉您是否匹配,但您不能这样做

match.group('hash')

获取散列词。

您尝试过吗?有什么事吗?至少有一个输入函数?你应该告诉我们你被困在哪里,这样我们就不必为你写整个教程,只需回答你的问题匹配输入字符串中的“橙色”前后总是有一个点吗?是的。它前后总是有一个点。这基本上是一个RabbitMQ主题交换原则。@OferSadan我编辑了这个问题。请看一看。但是*只代表一个词。在这里我可以看到\w+,这意味着一个或多个??好的,我来看看\w表示Unicode单词字符:大多数可以作为单词一部分的字符,以及数字和下划线。因为这些是字符而不是单词,所以使用+字符,它实际上意味着1个或多个字符。因为我知道您的散列字可能不止一个,所以我使用了以下语法:r?P\w+\.*解释:0个或多个字*字符,每个字由1个或多个字符\w+,或一个句点组成。一切都清楚了吗?@megna还有,我在正则表达式中犯了一个错误。我有这个角色,但你必须有\。。正如您在re文档中所看到的那样。匹配除换行符以外的任何字符。虽然这确实有效,但这意味着你将得到很多回溯,因为它试图匹配所有内容,而不仅仅是\…给出的小数点。。我建议您更新代码。
pattern = r"(?P<hash>(\w+|\.)*)\.(?P<orange>orange)\.(?P<star>\w+)"
pattern = r"(?P<hash>(\w*))\.(?P<orange>orange)\.(?P<star>\w+)"
pattern = r"(\w+|\s)*\.orange\.\w+"
match.group('hash')