这节我们学习从一个字符串中寻找0到多个相符的字符串的正则表达式的写法。

●re+代表匹配1到多个re

意思就是要寻找的字符串中有1个或者任意多个re都是符合要求的。

以下面代码举例说明:

python匹配某个指定字符出现次数 python字符串匹配次数_字符串

运行结果:

说明:上面的代码中,我们是从text这个字符串中寻找字符串,用以描述要寻找的字符串的模式的正则表达式是:r'hahaha(~)+'

这个正则表达式意思是:以"hahaha"开头,后面跟1个或者多个"~"的字符串都是符合要求的字符串。

上面代码中,text中的字符串"hahaha~~~~~~"是符合正则表达式描述的规则的,所以被找到然后打印出来了。

如果text = "I'm so happy right now,hahaha~",那么最后打印出来的结果就是"hahaha~",也就是说,"hahaha"后面只要跟1个或者任意多个"~",都匹配正则表达式r'hahaha(~)+',都会被找到并打印出来。

但是如果text = "I'm so happy right now,hahaha",就不匹配正则表达式了,运行结果就会报错。

大家自己试试修改text字符串,运行结果来验证。

提示:因为正则表达式本身是用字符串来表示的,所以在这里,re是指代字符串的,re+就表示1个或任意多个字符串,比如说,如果re指代的字符串是"abc",那么re+就表示1个或任意多个"abc"。

●re*代表匹配0到多个re,也就是说匹配任意多个re

意思就是要寻找的字符串中有任意多个re都是符合要求的,0个也是符合要求的。

以下面代码举例说明:

python匹配某个指定字符出现次数 python字符串匹配次数_正则表达式_02

运行结果:

说明:

text字符串中"hahaha"后面无论有0个"~",还是任意多个"~",都会寻找到并打印出来,大家自行修改text进行验证。

●()表示选择要重复的字符串,{}表示精确的重复多少次

前面我们介绍过用()结合|,或者()结合?实现正则表达式的可选规则。除此之外,我们记住()还有一个作用,就是表示在正则表达式中一部分要重复的字符串可以用()括起来。

用()可以把需要重复的字符串括起来,而用{}就表示把()括起来的部分精确的重复几次。

我们前面学了?是表示0或1次,+是表示1或多次,*是表示任意多次,包括0次,这几种方式都是重复的次数不确定不精确。而{}则表示一个精确的具体的次数,表示次数的数字写在{}里面。

以下面代码举例说明:

我们在一个字符串中寻找手机号码,不用()和{}的代码如下:

python匹配某个指定字符出现次数 python字符串匹配次数_正则表达式_03

运行结果:

我们看到上面的代码中,r"\d\d-\d\d\d\d\d\d\d\d\d\d\d"表示要寻找的手机号码是前面以2个数字开头,然后跟一个横杠"-",然后再跟11个数字。\d代表数字,还记得吗?

但是这样写我们看到这个正则表达式中前面2个\d和后面11个\d都是重复的。

那么我们就可以用()和{}来简化表达重复的字符串。

用()和{}来简化代码如下:

python匹配某个指定字符出现次数 python字符串匹配次数_python查找字符串出现次数_04

运行结果:

我们看到结果是一样的。

注意,假如message中的数字字符串是86-19999,或者只要横杠-前面少于2个数字或者横杠-后面少于11个数字,用这个正则表达式都是寻找不到的,运行结果会报错。大家自己修改message中的电话号码数字进行验证理解。

以上就是在正则表达式中如何表达寻找0到多个字符串,以及寻找重复多少次的字符串的方法。