我有几种模式-
orange.*
*.key.*
jug.*.key
在这里,*-恰好表示一个单词。 因此,字符串“ bar.key.door”应与模式“ .key。”匹配。但是字符串“ fruit.bar.key.door”不应与模式匹配。 那么,如何在python中为此编写正则表达式模式呢?有人可以帮忙吗?
答案 0 :(得分:0)
有多种实现方法:
Option 1: ^[\w]+\.key\.[\w]+$
Option 2: ^[[:word:]]+\.key\.[[:word:]]+$
Option 3: ^[^.]+\.key\.[^.]+$
Option 4: ^[A-Za-z]+\.key\.[A-Za-z]+$
希望有帮助。
答案 1 :(得分:0)
.
匹配除换行符以外的任何字符。为了与文字.
相匹配,需要像\.
那样进行转义。
*
-恰好意味着1个字
*
是另一个正则表达式字符,表示匹配前一个字符组的0个或多个重复。 \w+
将匹配一个单词。单个 word 表示字符串终止(在字符串之前或之后),因此可以使用^
或$
检查字符串。
查看official re library documentation了解更多信息。它具有示例功能,是学习正则表达式的很好的教程。
因此,三种正则表达式模式为:
p1 = r'orange\.\w+$'
p2 = r'^\w+\.key\.\w+$'
p3 = r'^jug\.\w+\.key$'
答案 2 :(得分:0)
您可以匹配该模式的一种方法是使用锚点来声明行的开始^
和结束$
并使用^[^.]+
匹配未知部分(取反) character class)或使用\w+
来匹配一个或多个单词字符。
例如:
import re
p = re.compile('^[^.]+\.key\.[^.]+$')
m = p.match('bar.key.door')
print (m.group())
其他模式的某些选项可能是:^orange\.\w+$
和^jug\.[^.]+\.key$