seo网站建设及扩词,silverlight 做的网站,wordpress 知名站点,寿阳网站建设一、正则表达式基本符号
^ 表示匹配字符串的开始位置 (例外 用在中括号中[ ] 时,可以理解为取反,表示不匹配括号中字符串)$ 表示匹配字符串的结束位置* 表示匹配 零次到多次#xff08;记忆方法#xff1a;符号是星星#xff0c;天上的星星可以是无数个也可以看不到#x…一、正则表达式基本符号
^ 表示匹配字符串的开始位置 (例外 用在中括号中[ ] 时,可以理解为取反,表示不匹配括号中字符串)$ 表示匹配字符串的结束位置* 表示匹配 零次到多次记忆方法符号是星星天上的星星可以是无数个也可以看不到 表示匹配 一次到多次 (记忆方法符号是加号增加的意思至少得有一个)? 表示匹配零次或一次记忆方法符号是问号那就是有或者没有两种可能. 表示匹配单个字符| 表示为或者,两项中取一项() 小括号表示匹配括号中全部字符[] 中括号表示匹配括号中一个字符 范围描述 如[0-9 a-z A-Z]{} 大括号用于限定匹配次数 如 {n}表示匹配n个字符 {n,}表示至少匹配n个字符 {n,m}表示至少n,最多m\ 转义字符 如上基本符号匹配都需要转义字符 如 \* 表示匹配 * 号、\w 表示英文字母和数字、\W 非字母和数字、\d 表示数字、 \D 非数字、 \s 匹配任何空白字符
更多更详细介绍点我查看更多正在表达式介绍
常用的正则表达式
常用的正则表达式匹配中文字符的正则表达式 [\u4e00-\u9fa5]
匹配双字节字符(包括汉字在内)[^\x00-\xff]
匹配空行的正则表达式\n[\s| ]*\r
匹配HTML标记的正则表达式/(.*).*\/\1|(.*) \//
匹配首尾空格的正则表达式(^\s*)|(\s*$)
匹配IP地址的正则表达式/(\d)\.(\d)\.(\d)\.(\d)/g //
匹配Email地址的正则表达式\w([-.]\w)*\w([-.]\w)*\.\w([-.]\w)*
匹配网址URL的正则表达式http://(/[\w-]\.)[\w-](/[\w- ./?%]*)?
sql语句^(select|drop|delete|create|update|insert).*$
二、re 模块函数介绍
2.1 re.compile
该函数将创建一个正则表达式的对象可以实现更有效率的复用。
import re
find_xx re.compile(正则表达式, 修饰符)
2.2 re.findall
该函数将会搜索所有满足条件的字符串
import re
r re.findall(正则表达式, 文本内容, 修饰符)
返回值会因为正则表达式的小括号不同而不同 共计三种情况
2.2.1 当给出的正则表达式不带括号的时候列表的元素为字符串此时字符串为整个正则表达式匹配的内容。
import retext 2018年的下半年9月份 27日
pattern re.compile(r\d{4}年|\d{1}月|\d{2}日)
res pattern.findall(text)
print(res)
# 输出结果 [2018年, 9月, 27日]
2.2.2 正则表达式中只有一个括号列表元素为字符串时则内容和括号中的正则表达式对应
import re
text 2018年的下半年9月份 27日
pattern re.compile(r\d(年|月|日|))
res pattern.findall(text)
print(res)
# 输出结果 [年, 月, 日]
2.2.3 如果正则表达式中有多个括号时列表的元素为多个字符组合成的元组元组中的字符串格式与括号数对应内容与正则表达式顺序对应。
import retest 2018年的下半年, 9月份, 27日
pattern re.compile(r(\d)(年|月|日))
res pattern.findall(test)
print(res)# 输出结果为[(8,年),(9,月),(7,日)]如果不希望按小括号分组可以在小括号开头输入 ?: 输出结果与 2.2.1 一致
import retest 2018年的下半年, 9月份, 27日
pattern re.compile(r(\d)(年|月|日))
res pattern.findall(test)
print(res)# 输出结果为[2018年, 9月, 27日]
2.3 re.finditer
搜索字符串返回一个匹配结果的迭代类型每个迭代元素是 match 对象相比 re.findall 它可以获取匹配的位置
import re# 编译正则表达式对象
pattern re.compile(rab.*c)# 在字符串中查找匹配正则表达式的内容
text abcfabcgabch
matches pattern.finditer(text)# 遍历所有匹配
for match in matches:start_pos match.start()end_pos match.end()match_str match.group()print(Match found:, match_str)print(Start position:, start_pos)print(End position:, end_pos)2.4 re.search
搜索第一个满足条件的字符串查找到第一个停止
import re
find_xx re.compile(正则表达式, 修饰符)
res re.search(find_xx, text)
2.5 re.sub
替换所有满足条件的字符串
import re
text hello 123 world 456
replacedStr re.sub(\d,222,text)
print(replacedStr)
# 返回hello 222 world 222 2.6 re.split
匹配分割string maxsplit是允许被分割成几个子串默认是0最大化字串如果是1则是从原本字符串中切出一个字串其他字串整串返回。
import re
a re.split(正则表达式, 文本, [maxsplit0])
print(a)
2.7 group([group1,....])
返回一个或者多个子组更详细介绍点我查看
import re
m re.search(正则表达式,文本)
print(m.group(2))
# 返回第二个字串