今天边肖就和大家分享一下python3中re(正则表达式)-的详细总结,有很好的参考价值。希望对你有帮助。来和边肖一起看看吧。
1.引入正则模块(Regular Expression)
要在python3中使用re,必须引入RE模块。
Import #引入了正则表达式
2.主要使用的方法 match(), 从左到右进行匹配
#pattern是要验证的规则。
#str是要检查的字符串。
result=re.match(模式,字符串)
#如果结果不是None,group方法将从结果中提取数据。
3. 正则表达式
1单字符匹配规则
字符函数。匹配任何1个字符(除了\n)
[]匹配[]中列出的字符
\d匹配数字,即0-9。
\D匹配非数字,即匹配非数字的字符。
\s匹配空白,即空格\tab
\S匹配非空白字符,\s不匹配。
\w伴随单词字符,a-z,A-Z,0-9,_
\W匹配非单词字符,\w不匹配。
2表示数量的规则
字符函数
*匹配前一个字符0次,多次或无限次,可选,可选。
匹配前一个字符一次、多次或无限次,直到它出现一次。
?匹配前一个字符一次或0次,一次或不匹配。
{m}匹配前一个字符m次。
{m,}匹配前一个字符至少m次。
{m,n}匹配前一个字符m到n次。
例1:验证手机号是否符合规则(不考虑边界问题)
#首先,知道手机号的规则
#1.所有的数字都是2。长度是11 3。第一个数字是1 4。第二个数字是35678中的一个。
pattern='1[35678]\d{9} '
phoneStr='18230092223 '
result=re.match(模式,phoneStr)
result.group()
#执行结果如下:
4. 原始字符串raw, 先来看如下实例:
上图:在str赋值' \nabc '前加' r '后,python解释器会自动给str的值' \nabc '加一个' '。
当str被打印时,它可以保持原来的字符串值' \nabc '被打印。
例2:(原字符串在正则表达式中的应用)
如果没有原始的自付R,那么我们必须这样做:在pattern中添加双'',以避免在转义字符中减少' '。会比较麻烦。
当我们使用R原字符串时,就不用考虑字符串的传递,更容易解决字符匹配的问题。
5. 表示边界
字符函数
匹配字符串的开头
$匹配字符串的结尾
\b匹配单词的边界。
\B匹配非单词边界
例三: 边界(制定规则来匹配str="ho ve r")
进口re
#定义匹配字符串的规则='ho ve r '
#1.从一封信开始
#2.中间有空字符
# 3.匹配字边界定义在VE的两侧。
'模式=r'^\w '
谁有时间
result=re.match(模式,字符串)
result.group()
6. 匹配分组
字符函数
|匹配左边和右边的任何表达式。
(ab)将括号中的字符归为一组。
\num是指由分组编号匹配的字符串。
(?Pname)组别名。
(?P=name)指的是别名组匹配的字符串。
例四: 匹配出0-100之间的数字
进口re
#匹配0到100之间的数字
#首先:正则化是从左到右匹配。
#经过分析:0-100可以分为三部分
#1.0 '0$'
#2.100 '100$'
#3.1-99“[1-9]\ d { 0,1}$”
#所以整合如下
pattern=r'0$|100$|[1-9]\d{0,1}$ '
#测试数据为0,3,27,100,123。
结果=重新匹配(模式,' 27 ')
result.group()
#考虑到0到1-99,上述模式也可以缩写为:pattern=r'100$|[1-9]?\d{0,1}$ '
#测试结果如下:
例五: 匹配分组,获取页面中的h1标签中的内容
进口re
#匹配分组,获取页面h1标签中的内容,抓取时会用到。
你好,世界!h1 '
pattern=r'h1(。*)/h1 '
result=re.match(模式,字符串)
result.group()
#执行下图。
例六: 分组引用, 精确获取多个标签内的内容
进口re
#引用分组,并准确获取多个标签中的内容
#'\1 '是对第一个分组的引用,类似地.
你好,世界!/h1/span '
pattern=r '(。)(.).*/\2/\1'
result=re.match(模式,字符串)
结果.组()
#执行下图:
例七-2:分组起别名
进口re
#组中的别名
你好,世界!/h1/span '
pattern='(?Pkey1。)(?Pkey2。)(?Pnr。*)/(?P=key2)/(?' P=key1)'
result=re.match(模式,字符串)
结果.组()
#执行下图:
以上对python3中RE(正则表达式)-的详细总结,就是边肖与大家分享的全部内容。希望能给你一个参考,多多支持我们。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。