python之[正则表达式]--通配符使用方法(最新可用)
![python之[正则表达式]--通配符使用方法(最新可用)](http://pic.ttrar.cn/nice/python%e4%b9%8b%5b%e6%ad%a3%e5%88%99%e8%a1%a8%e8%be%be.jpg)
【前沿查看】
| . | 匹配任意字符,除了换行符 |
|---|---|
| ^ | 匹配字符串开始的位置 |
| $ | 匹配字符串结束的位置,当出现多组符合的匹配时,返回字符串最后的那组匹配 |
| * | 匹配 0,1,n 次前面的原子【贪婪模式:尽可能多的匹配】 |
| ? | 匹配 0,1 次前面的原子【懒惰模式:精确匹配】 |
| + | 匹配 1,n 次前面的原子 |
| \\w+ | 匹配字母数字及下划线 |
| \\d+ | 匹配任意数字,等价于 [0-9] |
| [a-z]+ | 匹配任何小写字母 |
| [^a-z]+ | 匹配除了小写字母的其他字符 |
| { j } | 前面的原子出现 j 次 |
| { j , } | 前面的原子至少出现 j 次 |
| { j , k } | 前面的原子至少出现 j 次,至多出现 k 次 |
| i | j | 匹配 i 或 j ,若 i 与 j 同时出现,匹配 i |
| ( ) | 组,限制这组数据的组合如()内所描述一样,只返回符合括号内描述的内容 |
一、导入re库
import re
二、通配符基本用法
(1)通配符匹配
txt = '请找出小猫吧,找出小猫吧,出小猫吧'
cat = re.findall('出(.*?)吧',txt)
print(cat) # ['小猫', '小猫', '小猫']
print(cat[0]) # 小猫
(2)多条件通配符匹配
txt = '请找出小猫吧,找出小猫好吗,出小猫啦'
cat = re.findall('出(.*?)[吧|好|啦]',txt)
print(cat) # ['小猫', '小猫', '小猫']
(3)通配符标记匹配
txt = '请找出小猫1,\\n利用这个标记①,不要找出小猫2,'
cat = re.findall("出(.*?),.*?①",txt.replace("\\n",""))[0] # .* 无法匹配换行符,固要将换行符替换掉再匹配(或者字符串前加r转义掉)
print(cat) # 小猫1
三、匹配数字
(1)匹配字符串所有数字
txt = "{'k':123,'k':12345,'k':1234567}"
num = re.findall('\\d+',txt)
print(num) # ['123', '12345', '1234567']
(2)只匹配5位的数字
txt = "{'k':123,'k':12345,'k':1234567}"
num = re.findall(r'\\b\\d{5}\\b',txt)[0]
print(num) # 12345
(3)匹配5~7位的数字
txt = "{'k':123,'k':12345,'k':1234567}"
num = re.findall(r'\\b\\d{5,7}\\b',txt)
print(num) # ['12345', '1234567']
四、英文匹配
(1)匹配英文、数字、下划线(_)
txt = "{'k':123,'k':12345,'k_':1234567}"
word = re.findall('\\w+',txt)
print(word) # ['k', '123', 'k', '12345', 'k_', '1234567']
(2)匹配全英文字母
txt = "{'A':123,'b':12345,'cc':1234567}"
word = re.findall('[a-zA-Z]+',txt)
print(word) # ['A', 'b', 'cc']
(3)匹配数字+英文小大写
txt = "{'A':123,'b':12345,'c':1234567}"
word = re.findall('[0-9a-zA-Z]+',txt)
print(word) # ['A', '123', 'b', '12345', 'c', '1234567']
五、中文匹配
(1)匹配中文
txt = "你好,世界,hello world,123"
num = re.findall('[\\u4e00-\\u9fa5]+',txt)
print(num) # ['你好', '世界']
六、匹配非、特殊字符(前加^)
(1)匹配非数字
txt = "abc123一二三"
word = re.findall('[^0-9]+',txt)
print(word) # ['abc', '一二三']
(2)非法文件名替换
file_name = '文件//:\\|名.xlsx'
file_name = re.sub(r'[\\\\/:*?"<>|]','',file_name)
print(file_name) # 文件名.xlsx


