python 正则匹配 import re
1. 常见接口函数
import re
//从字符串的起始位置匹配一个模式 如果从开始位置就不匹配模式 直接返回None
re.match(pattern, info, flag)
//扫描整个字符串 返回第一个成功的匹配
re.search(pattern, info, flag)
//替换字符串中的匹配项
re.sub(pattern, resource, string, count=0, flags=0)
/*
pattern: 模式
resource: 替换的字符串
string: 要被替换的原始字符串
count: 模式匹配后替换的最大次数 默认0替换所有的匹配
*/
//编译正则表达式 生成一个正则表达式对象 供函数match search使用
re.compile(pattern, flags)
/*
string: 待匹配的字符串
startPos: 匹配开始的位置
endPos: 匹配结束的位置
*/
re.findall(string, startPos, endPos)
//匹配模式后分割字符串
re.split(pattern, string, split, flags)
2. 常见的正则匹配模式
^: 匹配字符串的开头 $: 匹配字符串的结尾 .: 匹配任意字符(不包含换行符)
*:表示前面字符出现0次或者多次 举例: (\.\.\/)*:表示../可以出现0次或者多次
+:表示前面字符出现1次或者多次 举例:(\.\.\/)+:表示../可以出现1次或者多次
?:表示前面字符出现0次或者1次 举例:(\.\.\/)?:表示../可以出现0次或者一次
[...]: 表示一组字符 [hig]: 匹配h 或 i 或 g
[^...]: 匹配不包含括号内的字符 [^/abc]: 匹配不包含/ 或 a 或 b 或 c
a|b: 匹配a 或 b
\w:匹配字母数字及下划线 \W:匹配非字母数字及下划线
\s:匹配任意空白字符 \S:匹配任意空字符
\d:匹配任意数字 等价[0-9] \D:匹配任意非数字
[0-9]:匹配数字 [^0-9]:匹配除了数字以外的字符
[a-z]:匹配小写字母 [^a-z]:匹配除了小写字母以外的字符
[A-Z] :匹配大小字母 [^A-Z]:匹配除了大小字母以外的字符
[0-9A-Za-z]:匹配任意数字和字母
# coding = utf-8
# 正则匹配学习
import re
def regex_search(message, pattern):
search = re.search(pattern, message)
if search:
print("Search: {0}".format(search.group(1)))
else:
print("Search Failed")
def regex_findall(message, regex):
search = re.findall(regex, message)
if search:
print("Search: {0}".format(search))
else:
print("Search Failed")
info = "[KeywordEnum(None, Top_Bottom, Left_Right, Custom_UV)] Stereo(\"Stereo Mode\", Float) = 0"
pattern = r"\[KeywordEnum\((.*)\)+\]"
regex_search(info, pattern) # None, Top_Bottom, Left_Right, Custom_UV
info = "../../info/test /age/my/name/excel.xls"
pattern = r"(\.\.\/)*(.+)$" # info/test /age/my/name/excel.xls
"""
a. 匹配字符串中所有符合匹配点的字符串 re.findall()
"我爱中国I love China 我很开心 Happy Day"
匹配所有的中文: r"[^a-zA-Z\s]+"
匹配所有的英文: r"[a-zA-Z\s]+"
b. 匹配邮箱
r"^[0-9a-zA-Z_-]+@[0-9a-z]+.com$"
c. 匹配网址
r"https(s?)://[^\s]+"
d. 截取指定标志区间内的字符串
"""