Python中正则表达式的重复情况是什么?
我们可以使用一些特殊字符构建识别重复字符组的正则表达式。以下元字符可以用于搜索一个字符或一组重复字符。
问号是第一个重复运算符或限定符。通过指示引擎尝试匹配前一个标记0或1次,它有效地将其变为可选。
用星号或星号指示引擎尝试将前一个标记零次或多次匹配。加号指示引擎尝试多次匹配前一个标记。<[A-Za-z] [A-Za-z0-9]*>匹配没有任何属性的HTML标记。尖括号是文字表达式。初始字符类对应一个字母。第二个字符类匹配字母或数字。星号重复第二个字符类。如果第二个字符类什么也不匹配,那么这是可以接受的,因为我们利用了星号。因此,这个标记将匹配我们的正则表达式。
当匹配时,第一个字符类将匹配H。第二个字符类将重复三次,分别在每一步匹配T、M和L,这要归功于星号。我也可以选择使用[A-Za-z0-9]+。我没有这样做,因为这个正则表达式将匹配无效的HTML元素1>。不过,如果你确定要查找的文本不包含这样的错误标签,那么这个正则表达式可能就足够了。
更多Python相关文章,请阅读:Python 教程
限制重复
您还可以使用额外的量词指示一个标记可以重复多少次。语法是min,max,其中min表示匹配的最低次数(零或正整数),max表示匹配的最大次数(等于或大于min的整数)。如果逗号存在但max被省略,则最大匹配次数为无限。因此,值0和1等价于?,*和+。如果省略了逗号和max,则引擎将精确重复标记min次。
要匹配1000到9999之间的数字,请使用表达式b[1-9][0-9]3b。数字100到99999匹配值2,4b。请注意使用的限制词。
在重复中使用的元字符
字符 | 意思 | 例子 |
---|---|---|
? |
这表示前面的字符为零个或一个。 注意那里的零因为如果你不小心会让你犯错。 | pythonl?y matches: pythony pythonly |
* |
查找前一个字符的零个或多个。 | pythonl*y matches both of the above plus pythonlly, pythonllly, and so on |
+ |
查找前一个字符的一个或多个。 | pythonl+y matches: pythonly, pythonlly, pythonllly,and so on |
{n,m} |
查找前面字符的n到m个重复。 | fo{1,2} matches fo or foo |
这些重复字符都可以用于描述字符组。因此,
>>> import re # Python的正则表达式模块 - 所有示例的隐式导入
>>> re.match('(.an){1,2}s', 'cans')
<re.MatchObject instance at 862760>
相同的模式也将匹配’cancans’或’pans’或’canpans’,但不匹配’bananas’。
示例
以下代码回答了上面的问题。
#导入re模块
import re
#存储字符串
s = "sheeeeeeeeple"
print("给定字符串 -",s)
#搜索重复的单词
match = re.search(r"he+", s)
#打印匹配的字母组
print ("最新字符串 -",match.group())
输出
给定字符串 - sheeeeeeeeple
最新字符串 - heeeeeeee
代码解释
首先,我们从正则模块中导入了re。然后我们在变量s中存储了一个字符串sheeeeeeeeple。通过使用search方法,在字符串s中搜索“e”的重复,并将其存储在变量match中。然后通过使用group方法,我们打印出匹配的单词。
示例2
以下代码回答了上面的问题
#导入re模块
import re
#存储字符串
s = "tutoriallllllllsPoint"
print('给定字符串 -',s)
#搜索重复的单词
match = re.search(r"al+", s)
#打印匹配的字母组
print ("最新字符串 -",match.group())
输出
给定字符串 - tutoriallllllllsPoint
最新字符串 - allllllll
代码解释
首先,我们从正则模块中导入了re。然后我们在变量s中存储了一个字符串sheeeeeeeeple。使用search方法,我们在字符串s中搜索“l”的重复,并将其存储在变量match中。然后通过使用group方法,我们打印出匹配的单词。
结论
一个被重复多次的表达式被称为重复。通过“*”可以重复表达式任意次,包括0次。通过“+”可以重复表达式至少一次。表达式后跟“?”可以重复0次或者一次。当需要明确指定最小次数和最大次数重复时,可以使用边界运算符{}。例如,a{2}表示字母“a”重复2次,a{2,4}表示字母“a”重复2到4次,a{2,}表示字母“a”至少重复2次,没有上限。注意,在{}中不能有空格,而且下限和上限的值没有上限。所有重复表达式均参考最短的前一个子表达式:一个单独的字符,一个字符集或者带有()的子表达式。