在Python中制作与单词变体匹配的正则表达式

在Python中制作与单词变体匹配的正则表达式,python,regex,Python,Regex,“HELP”、“HELP”、“HELP”、“H!E!L!p!”、“H-E-L-p”、“hhheeeeellp”都应该返回匹配项。但它们之间不能有任何其他字母,例如“hello pie”不应导致匹配 我能来的最近的地方如下: re.search("[Hh]+.*?[Ee]+.*?[Ll]+.*?[Pp]", string) 但这太自由了,因为它允许出现“帮助”一词以外的字母。如果我只是在每个括号之间使用“+”,那么它的限制性就太大了,因为敌人不允许像“h!e!l!p!”或“h

“HELP”、“HELP”、“HELP”、“H!E!L!p!”、“H-E-L-p”、“hhheeeeellp”都应该返回匹配项。但它们之间不能有任何其他字母,例如“hello pie”不应导致匹配


我能来的最近的地方如下:

re.search("[Hh]+.*?[Ee]+.*?[Ll]+.*?[Pp]", string)

但这太自由了,因为它允许出现“帮助”一词以外的字母。如果我只是在每个括号之间使用“+”,那么它的限制性就太大了,因为敌人不允许像“h!e!l!p!”或“h-e-l-p”这样的变化被匹配。我猜我需要在某个地方使用“[^A-ZA-z],但不确定放在哪里,或者该解决方案是否在正确的轨道上。--我很抱歉没有在初始问题中包含更多信息。谢谢。

您的问题没有涵盖所有可能发生的情况,但您可以尝试以下方法:

^[hH]+[^\s\w]*[eE]+[^\s\w]*[lL]+[^\s\w]*[pP]+[^\s\w]*$

这将捕获类似H1E2L3P的内容,例如,如果您想要更改,您将需要更改正则表达式

您当前的正则表达式是什么样子的?我能得到的最接近的结果如下:re.search(“[Hh]+.*?[Ee]+.*?[Ll]+.*[Pp]”,string)。但这太自由了,因为它允许使用“帮助”一词以外的字母“出现。如果我只是在每个括号之间使用“+”,那么它的限制性就太大了,因为敌人不允许像“h!e!l!p!”或“h-e-l-p”这样的变化被匹配。我猜我需要在某个地方使用“[^A-ZA-z],但不确定该放在哪里,或者该解决方案是否正确。--我很抱歉没有在初始问题中包含更多信息。谢谢。
“H-E--E-EL*LP”
(重复字母+非字母字符)以及“help”一词是如何使用的(无论他看起来如何)必须与字符串的其余部分分开:使用空格、单词边界或其他东西?我想可能是
r'h+[^\s\w]*e+[^\s\w]*l+[^\s\w]*p+[^\s\w]*”
(使用
re.fullmatch
re.IGNORECASE
)但是的,这个问题定义得很糟糕。你不能“涵盖所有可能发生的事情”“因为它们的数量是无限的……我不知道你说的是什么意思,显然你可以涵盖所有可能发生的情况,否则你会有一个正则表达式,它忽略了不应该出现的情况。这里建议的解决方案似乎起了作用。你说并非所有可能发生的事情都包括在内是什么意思?是不是你预见到了你认为应该匹配而不是匹配的事情?具体是什么?