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'。请注意,{}内不能有空格,并且下限和上限的值没有上限。所有重复表达式都引用最短可能的先前子表达式:单个字符;字符集或用()分组的子表达式。