正则表达式

\d匹配一个数字
\w匹配一个字母
.可以匹配任意字符
*需要字符串里完全符合,匹配规则,就匹配
+表示至少一个字符
表示0个或1个字符
{n}表示n个字符
{n,m}表示n-m个字符
[ ]表示范围
(PIp)可以匹配大小写p开头的字符串
^字符串开始位置与匹配规则符合就匹配,否则不匹配
$字符串结束位置与匹配规则符合就匹配,否则不匹配
\转义字符(由于python字符串本身也用 \ 转义所以不常用)
r’ABC-001’代替 \ 转义字符
\s匹配空格和tab等空白符

什么是正则表达式的贪婪与非贪婪匹配
如:String str=“abcaxc”;
    Patter p=“ab.*c”;
贪婪匹配:正则表达式一般趋向于最大长度匹配,也就是所谓的贪婪匹配。如上面使用模式p匹配字符串str,结果就是匹配到:abcaxc(ab.*c)。

非贪婪匹配:就是匹配到结果就好,就少的匹配字符。如上面使用模式p匹配字符串str,结果就是匹配到:abc(ab.*c)。
  
re模块

import re
test = '一堆字符串' 
if re.match(r'正则表达式',test):
      print('成功')
else:
      print(’失败‘)


import re   #第一步,要引入re模块
test = '一堆字符串' 
a = re.findall("正则表达式",test)   #第二步,调用模块函数

^的用法

import re   #第一步,要引入re模块
a = re.findall("^匹配规则", "匹配规则这个字符串是否匹配")  
 #字符串开始位置与匹配规则符合就匹配,否则不匹配

[^a-z]反取,匹配出除字母外的字符,元字符如果写到字符集里就是反取

import re   #第一步,要引入re模块
a = re.findall("[^a-z]", "匹配s规则这s个字符串是否s匹配f规则则re则则则")   #反取,匹配出除字母外的字符
print(a)  #以列表形式返回匹配到的字符串
#打印出 ['匹', '配', '规', '则', '这', '个', '字', '符', '串', '是', '否', '匹', '配', '规', '则', '则', '则', '则', '则']

✳字符的用法

  • 需要字符串里完全符合,匹配规则,就匹配,(规则里的*元字符)前面的一个字符可以是0个或多个原本字符

  • 匹配前一个字符0或多次,贪婪匹配前导字符有多少个就匹配多少个很贪婪

  • 如果规则里只有一个分组,尽量避免用*否则会有可能匹配出空字符串

import re   #第一步,要引入re模块
a = re.findall("匹配规则*", "这个字符串是否匹配规则则则则则")   #需要字符串里完全符合,匹配规则,就匹配,(规则里的*元字符)前面的一个字符可以是0或多个原本字符
print(a)  #以列表形式返回匹配到的字符串
#打印出 ['匹配规则则则则则']

+元字符的用法

  • 需要字符串里完全符合,匹配规则,就匹配,(规则里的+元字符)前面的一个字符可以是1个或多个原本字符
  • 匹配前一个字符1次或无限次,贪婪匹配前导字符有多少个就匹配多少个很贪婪
import re   #第一步,要引入re模块
a = re.findall("匹配+", "匹配配配配配规则这个字符串是否匹配规则则则则则")   #需要字符串里完全符合,匹配规则,就匹配,(规则里的+元字符)前面的一个字符可以是1个或多个原本字符
print(a)  #以列表形式返回匹配到的字符串
#打印出 ['匹配配配配配', '匹配']

?元字符的用法

  • 需要字符串里完全符合,匹配规则,就匹配,(规则里的?元字符)前面的一个字符可以是0个或1个原本字符
  • 匹配一个字符0次或1次
  • 还有一个功能是可以防止贪婪匹配
import re   #第一步,要引入re模块
a = re.findall("匹配规则?", "匹配规这个字符串是否匹配规则则则则则")   #需要字符串里完全符合,匹配规则,就匹配,(规则里的?元字符)前面的一个字符可以是0个或1个原本字符
print(a)  #以列表形式返回匹配到的字符串
#打印出 ['匹配规', '匹配规则']

{}元字符,范围

  • 需要字符串里完全符合,匹配规则,就匹配,(规则里的 {} 元字符)前面的一个字符,是自定义字符数,位数的原本字符
  • {m}匹配前一个字符m次,{m,n}匹配前一个字符m至n次,若省略n,则匹配m至无限次
  • {0,}匹配前一个字符0或多次,等同于*元字符
  • {+,}匹配前一个字符1次或无限次,等同于+元字符
  • {0,1}匹配前一个字符0次或1次,等同于?元字符
import re   #第一步,要引入re模块
    a = re.findall("匹配规则{3}", "匹配规这个字符串是否匹配规则则则则则")   #{m}匹配前一个字符m次,{m,n}匹配前一个字符m至n次,若省略n,则匹配m至无限次
    print(a)  #以列表形式返回匹配到的字符串
    #打印出 ['匹配规则则则']

[0-9a-zA-Z_]可以匹配一个数字、字母或者下划线

[0-9a-zA-Z_]+可以匹配至少由一个数字、字母或者下划线组成的字符串,比如’a100’,‘0_Z’,'Py3000’等等;

[a-zA-Z_][0-9a-zA-Z_]可以匹配由字母或下划线开头,后接任意个由一个数字、字母或者下划线组成的字符串,也就是Python合法的变量(类似__init)

[a-zA-Z_][0-9a-zA-Z_]{0, 19}更精确地限制了变量的长度是1-20个字符(前面1个字符+后面最多19个字符)。

参考源代码https://www.cnblogs.com/zjltt/p/6955965.html

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值