Python在模式开始时使用metamatcher重新匹配正则表达式

Python在模式开始时使用metamatcher重新匹配正则表达式,python,regex,re,Python,Regex,Re,我有一个代码可以动态创建要匹配的重模式,但其中一个代码会产生一个问题: pattern=re.compile(“*sauce”) 告诉我错误:在位置0处无需重复 当星星在其他地方时,它工作得很好。我试图匹配任何一个单词来代替*。我试图查找正则表达式模式,但找不到可以替换它的东西 示例: “*酱汁” #应匹配: “苹果酱” “芥末酱” #或 “蓝色*红色” #应匹配: “蓝色和红色” “蓝色还是红色” 等等。我已经有一段时间没有处理regex了,但我相信*意味着它将尝试匹配前面块或字符的0到n

我有一个代码可以动态创建要匹配的重模式,但其中一个代码会产生一个问题:

pattern=re.compile(“*sauce”)
告诉我错误:在位置0处无需重复

当星星在其他地方时,它工作得很好。我试图匹配任何一个单词来代替*。我试图查找正则表达式模式,但找不到可以替换它的东西

示例:

“*酱汁”
#应匹配:
“苹果酱”
“芥末酱”
#或
“蓝色*红色”
#应匹配:
“蓝色和红色”
“蓝色还是红色”

等等。

我已经有一段时间没有处理regex了,但我相信
*
意味着它将尝试匹配前面块或字符的0到n个数字。由于在本例中,
*
之前没有任何内容,因此您将遇到该错误。您可以通过在
*
前面放置一些字符或转义
*
字符来修复它

编辑
看过这个例子后,我想如果你不在乎空间的话,你需要你的正则表达式模式是
*sauce
或者
*sauce

在正则表达式中
*
意味着出现的次数是0或更多次

因此,如果您允许任何病房,那么您需要使用
\w
\w允许
[a-zA-Z0-9.]
字符

如果要允许包含这些字符的任何单词,请使用:
\b\w+\b

如果你的单词由任何字符组成,那么你可以使用
*


所以你可以试试
'\b\w+\b?酱汁“
还是
”*?谢谢,你的回答也很好!就像另一个一样。它工作得很好