正则表达式量词仅适用于一个

时间:2018-06-19 15:17:17

标签: python regex

我有几种模式-

orange.*
*.key.*
jug.*.key

在这里,*-恰好表示一个单词。 因此,字符串“ bar.key.door”应与模式“ .key。”匹配。但是字符串“ fruit.bar.key.door”不应与模式匹配。 那么,如何在python中为此编写正则表达式模式呢?有人可以帮忙吗?

3 个答案:

答案 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+来匹配一个或多个单词字符。

例如:

^[^.]+\.key\.[^.]+$

import re
p = re.compile('^[^.]+\.key\.[^.]+$')
m = p.match('bar.key.door')
print (m.group())

Demo

其他模式的某些选项可能是:^orange\.\w+$^jug\.[^.]+\.key$