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]3b。介于 100 和 99999 之间的数字匹配值 2,4b。请注意使用的术语限制。

重复中使用的元字符

字符 含义 示例
?

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

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

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

更新于: 2022-11-23

1K+ 阅读量

开启您的 职业生涯

完成课程获得认证

开始学习
广告