正则表达式
一、什么是正则表达式
正则表达式(Regular Expression):描述了一种字符串匹配的模式(patton),包括普通字符(例如,a和z之间的字母)和特殊字符(称为元字符)。
作用:
-
检查一个字符串是否含有某种子字符串
-
将匹配的子字符串替换
-
从某个子字符串中取出符合某个条件的子字符串
特点:繁琐却强大
二、匹配网址 详解
⛏匹配网址的正则字符串:'https?😕/(?:[-\w.]|(?:%[\da-fA-F]{2}) )+'
'''一、正则表达式:'''
'''
定义:用来检索或者替换某个规则的文本
'''
import re
def Find(string):
# findall
url = re.findall( 'https?://(?:[-\w.]|(?:%[\da-fA-F]{2}) )+' , string)
return url
string = 'Runnoob __的网址是:https://www.runoob.com,Google 的网址是:https://www.google.com'
print("URLS:",Find(string))
'''正则表达式:是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配'''
#场景一、怎样从一个字符串中找到 数字 并输出
str = 'A1abcY123,AdefH&#____^!'
patt1 = '[0-9]' # 匹配 数字 以 , 隔开
print(re.findall(patt1,str))
patt2 = '[a-z]' # 匹配 任何小写字母
print(re.findall(patt2,str))
patt3 = '[A-Z]' # 匹配 任何大写字母
print('part3 = ',re.findall(patt3,str))
patt4 = '[A-Z0-9]' # 匹配 任何 大写字母和数字
print(re.findall(patt4,str))
patt5 = '[\w]' # 匹配 数字、字母、下划线 <=> [a-zA-Z0-9_]
patt6 = '[a-zA-Z0-9_]'
print(re.findall(patt5,str))
print(re.findall(patt6,str))
print(r'\t','\\t') # 把 '\t' 当成普通字符输出
字符串2 = '百度的网址是:https://www.baidu.com,小米的网址是:https://www.mi.com'
正则表达式规则 = 'https?://www.'
print(re.findall(正则表达式规则,字符串2))
str3 = '01Aa#!'
patt7 = '[a]'
print('测试:',re.findall(patt7,str3))
三、常用的 具有指定含义的符号
’https?😕/(?:[-\w.]|(?:%[\da-fA-F]{2}) )+'
1.语法
1)普通字符
包括所有大写字母、小写字母、数字、标点符号、其他符号。
2)非打印字符
字符 | 描述 |
---|---|
\n | 匹配一个换行符。等价于\x0a 和 \cJ |
\t | 匹配一个制表符。等价于 \x09 和 \cI。 |
3) 特殊字符
字符 | 描述 |
---|---|
? | 匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配 ? 字符,请使用 ?。 |
+ | 匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 +。 |
. | 匹配除换行符 \n 之外的任何单字符。要匹配 . ,请前面加反斜杠 |
| | 指明两项之间的一个选择 |
( ) | 标记一个子表达式的开始和结束位置。 |
4) 限定符
2.匹配规则
1)等价
? 等价于 匹配长度{0,1}
* 等价于 匹配长度{0,}
+ 等价于 匹配长度{1,}
\d 等价于 [0-9]
\D 等价于 [^0-9]
\ 等价于 [A-Za-z_0-9]
2) 常用的运算符和表达式
^ 开始
() 域段
[] 包含,默认是一个字符长度
[^] 不包含,默认是一个字符长度
{n,m} 匹配长度
. 任何单个字符(\. 字符点)
| 或 # 咋用?
\ 转义
$ 结尾
[A-Z] 26个大写字母
[a-z] 26个小写字母
[0-9] 0至9数字
[A-Za-z0-9] 26个大写字母、26个小写字母和0至9数字
, 分割
.
分割语法:
[A,H,T,W] 包含A或H或T或W字母
[a,h,t,w] 包含a或h或t或w字母
[0,3,6,8] 包含0或3或6或8数字
3)语法和释义
基础语法 "^ ([]{}) ([]{}) ([]{}) $"
正则字符串 = "开始([包含内容]{长度})([包含内容]{长度})([包含内容]{长度})结束"