从列表中生成精确单词的正则表达式

时间:2018-01-24 23:58:05

标签: python regex

我正在尝试编写一个可以匹配以下或类似单词中的任何单词的正则表达式。这些字符串中的**,而不是任何字符。

Jump
J**p
J*m*
J***
***p
J***ing
J***ed
****ed

我想保持固定的长度。

1. Any string of lenght 4 that matches the string 'jump' 
2. Any string of length 6 that matches 'jumped' 
3. Any string of length 7 that matches 'jumping' 

我使用以下陈述但由于某种原因,我无法正确翻译。它也接受其他字符串。

p = re.compile('j|\*)(u|\*)(m|\*)...)
bool(p.match('******g'))

1 个答案:

答案 0 :(得分:6)

这是一个相当简单的正则表达式。我们想匹配一个单词,但允许每个字符都是星号。因此,正则表达式是[x*]形式的字符组序列:

[Jj*][u*][m*][p*](?:[i*][n*][g*]|[e*][d*])?

See it in action at regex101.

如果您只想匹配这些确切的字词,请务必使用re.fullmatch模式。