前言:
正则表达式不仅可以用于python中,其他类似JavaScript,C#同样可以用到,比如当我们需要提取“www.google.123.45"中的数字的时候便需要用到正则表达式。本篇将会介绍一些正则表达式的用法
提取字符串中的数字
前期准备:
需要导入re模块
import re#re 模块使 Python 语言拥有全部的正则表达式功能。
实例
import re
result1 = re.findall(r'\d+','runoob 123 google 456')#findall在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。\d:匹配一个数字字符。等价于 [0-9]。
pattern = re.compile(r'\d+') # 查找数字
result2 = pattern.findall('runoob 123 google 456')
result3 = pattern.findall('run88oob123google456', 0, 10)#0是开始匹配的下标,10是结束下标但是不包含在内,一般指定字符串的结束位置,默认为字符串的长度。
print(result1)
print(result2)
print(result3)
输出:['123', '456']
['123', '456']
['88', '12']
这个同样可以将123,12匹配出来
import re
result=re.findall(r'\d+','www.baidu.123.12')
print(result)
检索和替换
我们都知道一般的固话前都有区域好加”-“比如0757-xxxx,我们同样可以通过正则表达式进行替换
import re
phone = "2004-959-559 # 这是一个电话号码"
num = re.sub(r'\D', "", phone)#re.sub用于替换字符串中的匹配项。"\D"表示匹配任意非数字,即替换所有非数字的元素
一般语法:
re.sub(pattern, repl, string, count=0, flags=0)
pattern : 正则中的模式字符串。
repl : 替换的字符串,也可为一个函数。
string : 要被查找替换的原始字符串。
count : 模式匹配后替换的最大次数,默认 0 表示替换所有的匹配。
flags : 编译时用的匹配模式,数字形式。
match()匹配
re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。
import re
print(re.match('www', 'www.Google.com').span()) # 在起始位置匹配
print(re.match('com', 'www.Google.com')) # 不在起始位置匹配
输出:(0,3)
None