正则表达式a开头b结尾_Python中的正则表达式之match
匹配 URL:
[a-zA-z]+://[^s]*
⽤这个正则表达式去匹配⼀个字符串,如果这个字符串中包含类似 URL 的⽂本,那就会被提取出来。
a-z 匹配任意的⼩写字母,s 匹配任意的空⽩字符,* 匹配前⾯任意多这个看上去乱糟糟的正则表达式其实有特定的语法规则。⽐如,a-z 匹配任意的⼩写字母,s 匹配任意的空⽩字符,* 匹配前⾯任意多个字符
个字符。这⼀长串的正则表达式就是这么多匹配规则的组合。
写好正则表达式后,就可以拿它去⼀个长字符串⾥匹配查了。不论这个字符串⾥⾯有什么,只要符合我们写的规则,统统可以出来。对于⽹页来说,如果想出⽹页源代码⾥有多少 URL,⽤ URL 的正则表达式去匹配即可。
写好正则表达式后,就可以拿它去⼀个长字符串⾥匹配查了。不论这个字符串⾥⾯有什么,只要符合我们写的规则,统统可以出来。对于⽹页来说,如果想出⽹页源代码⾥有多少 URL,⽤ URL 的正则表达式去匹配即可。
以下列出了常⽤的匹配规则:
w 匹配字母、数字及下划线
W 匹配不是字母、数字及下划线的字符
s 匹配任意空⽩字符,等价于 [tnrf]
S 匹配任意⾮空字符
d 匹配任意数字,等价于 [0~9]
D 匹配任意⾮数字的字符
A 匹配字符串开头
Z 匹配字符串结尾,如果存在换⾏,只匹配到换⾏前的结束字符串
z 匹配字符串结尾,如果存在换⾏,同时还会匹配换⾏符
G 匹配最后匹配完成的位置
n 匹配⼀个换⾏符
t 匹配⼀个制表符
^ 匹配⼀⾏字符串的开头
$ 匹配⼀⾏字符串的结尾
. 匹配任意字符,除了换⾏符,当 re.DOTALL 标记被指定时,则可以匹配包括换⾏符的任意字符
[...] ⽤来表⽰⼀组字符,单独列出,⽐如 [amk] 匹配 a、m 或 k
python正则表达式不包含[^...] 不在 [] 中的字符,⽐如 匹配除了 a、b、c 之外的字符
* 匹配 0 个或多个表达式
+ 匹配 1 个或多个表达式
匹配 0 个或 1 个前⾯的正则表达式定义的⽚段,⾮贪婪⽅式
{n} 精确匹配 n 个前⾯的表达式
{n, m} 匹配 n 到 m 次由前⾯正则表达式定义的⽚段,贪婪⽅式
a|b 匹配 a 或 b
() 匹配括号内的表达式,也表⽰⼀个组
其实正则表达式不是 Python 独有的,它也可以⽤在其他编程语⾔中。但是 Python 的 re 库提供了整个正则表达式的实现,利⽤这个库,可以在 Python 中使⽤正则表达式。在 Python 中写正则表达式⼏乎都⽤这个库,下⾯就来了解它的⼀些常⽤⽅法。
match
⾸先介绍⼀个常⽤的匹配⽅法 —— match,向它传⼊要匹配的字符串,以及正则表达式,就可以检测这个正则表达式是否匹配字符串。
match ⽅法会尝试从字符串的起始位置匹配正则表达式,如果匹配,就返回匹配成功的结果;如果不匹配,就返回 None。
import re
content = 'Hello 123 4567 World_This is a Regex Demo'
print(len(content))
result = re.match('^Hellosdddsd{4}sw{10}', content)
print(result)
up())
print(result.span())
运⾏结果:
这⾥⾸先声明了⼀个字符串,其中包含英⽂字母、空⽩字符、数字等。接下来,我们写⼀个正则表达式:
^Hellosdddsd{4}sw{10}
⽤它来匹配这个长字符串。开头的 ^ 匹配字符串的开头,也就是以 Hello 开头; s 匹配空⽩字符,⽤
来匹配⽬标字符串的空格;d 匹配数字,3 个 d 匹配 123;再写 1 个 s 匹配空格;后⾯的 4567,其实依然能⽤ 4 个 d 来匹配,但是这么写⽐较烦琐,所以后⾯可以跟 {4}代表匹配前⾯的规则 4 次,也就是匹配 4 个数字;后⾯再紧接 1 个空⽩字符,最后w{10} 匹配 10 个字母及下划线。
我们注意到,这⾥并没有把⽬标字符串匹配完,不过依然可以进⾏匹配,只不过匹配结果短⼀点⽽已。
⽽在 match ⽅法中,第⼀个参数传⼊正则表达式,第⼆个参数传⼊要匹配的字符串。
打印输出结果,可以看到结果是 SRE_Match 对象,这证明成功匹配。该对象有两个⽅法:group ⽅法可以输出匹配的内容,结果是Hello 123 4567 World_This,这恰好是正则表达式规则所匹配的内容;span ⽅法可以输出匹配的范围,结果是 (0, 25),这就是匹配到的结果字符串在原字符串中的位置范围。
通过上⾯的例⼦,我们基本了解了如何在 Python 中使⽤正则表达式来匹配⼀段⽂字。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论