Python正则表达式中的重复情况有哪些?


我们可以使用一些特殊字符构建识别重复字符组的正则表达式。可以使用以下元字符来搜索重复的字符或字符集。

问号是第一个开发的重复运算符或量词。它通过指示引擎尝试匹配前一个标记0次或1次来有效地使其成为可选的。

星号或星号指示引擎尝试匹配前一个标记零次或多次。加号指示引擎尝试匹配前一个标记一次或多次。<[A-Za-z][A-Za-z0-9]*> 匹配任何没有属性的HTML标签。尖括号是字面表达式。第一个字符类对应于一个字母。第二个字符类匹配字母或数字。星号重复第二个字符类。如果第二个字符类不匹配任何内容,这是可以接受的,因为我们使用了星号。因此,这样的标签将与我们的正则表达式匹配。

匹配时,第一个字符类将匹配H。由于使用了星号,第二个字符类将重复三次,每次匹配T、M和L。我也可以选择使用[A-Za-z0-9]+。我没有这样做,因为这个正则表达式将匹配无效的HTML元素1>。但是,如果您确定正在查找的文本不包含此类无效标签,则此正则表达式可以足够。

限制重复

您还可以使用额外的量词来指示标记可以重复多少次。语法是min,max,其中min表示最低匹配次数(零或正整数),max表示最大匹配次数(等于或大于min的整数)。如果存在逗号但max被省略,则最大匹配次数是无限的。因此,值0和1分别等同于?、*和+。如果省略逗号和max,则指示引擎精确重复min次标记。

要匹配1000到9999之间的数字,可以使用表达式b[1-9][0-9]{3}b。100到99999之间的数字匹配值{2,4}b。请注意使用的术语限制。

重复中使用的元字符

字符 含义 示例
?

这意味着零个或一个前导字符。

注意那里的零部分,因为如果您不小心,它可能会让您陷入困境。

pythonl?y 匹配

pythony

pythonly

* 查找零个或多个前导字符。

pythonl*y 匹配

以上两者以及

pythonlly,

pythonllly等等

+ 查找一个或多个前导字符。

pythonl+y 匹配

pythonly,

pythonlly,

pythonllly等等

{n,m} 查找n到m次重复的前导字符。

fo{1,2} 匹配

fo 或

foo

所有这些重复字符都可以用来描述字符组。因此

>>> import re # Python的正则表达式模块 - 所有示例中都隐式导入

>>> re.match('(.an){1,2}s', 'cans')

<re.MatchObject instance at 862760>

相同的模式也将匹配'cancans'或'pans'或'canpans',但不匹配'bananas'。

示例

以下代码回答了上述问题

#importing re import re #storing a string s = "sheeeeeeeeple" print("Give String -",s) #searching for the repetitive words match = re.search(r"he+", s) #printing the matched groups of letters together print ("Latest String-",match.group())

输出

Give String - sheeeeeeeeple
Latest String- heeeeeeee

代码解释

首先,我们从正则表达式模块导入re。然后,我们将字符串sheeeeeeeeple存储在变量s中。通过使用search方法,我们在字符串s中搜索“e”的重复,并将其存储在变量match中。然后通过使用group方法,我们打印匹配的单词。

示例2

以下代码回答了上述问题

#importing re import re #storing a string s = "tutoriallllllllsPoint" print('Give String-',s) #searching for the repetitive words match = re.search(r"al+", s) #printing the matched groups of letters together print ("Lates string -",match.group())

输出

Give String- tutoriallllllllsPoint
Lates string - allllllll

代码解释

首先,我们从正则表达式模块导入re。然后,我们将字符串sheeeeeeeeple存储在变量s中。使用search方法,我们在字符串s中搜索“l”的重复,并将其存储在变量match中。然后通过使用group方法,我们打印匹配的单词。

结论

无论重复多少次,都被称为重复的表达式。在'*'之后可以重复任意次数的表达式,包括0次。在'+'之后可以重复任意次数的表达式,但至少一次。

在'?'之后的表达式可以重复零次或一次。当需要明确指定最小值和最大重复次数时,可以使用边界运算符{}。因此,a{2}是精确重复两次的字母'a',a{2,4}表示重复2到4次的字母'a',a{2,}表示至少重复两次且没有上限的字母'a'。请注意,{}内不能有空格,并且下限和上限的值没有上限。所有重复表达式都引用最短可能的先前子表达式:单个字符;字符集或用()分组的子表达式。

更新于:2022年11月23日

浏览量:1K+

启动你的职业生涯

完成课程获得认证

开始学习
广告