正则表达式
一、括号的应用:
1.方括号:[字符1字符2]:表示匹配字符1或字符2 ,是选择方括号里字符的意思,如果 . ^等特殊字符在方括号里,就没有了对应作用
如: [\d.]+ 代表数字或者点 出现1次或者多次
如果在方括号中使用 ^
, 表示 非
方括号里面的字符集合。
import re
content = 'a1b2c3d4e5' p = re.compile(r'[^\d]' ) for one in p.findall(content): print(one)
运行结果:
a
b
c
d
e
[^\d]
表示,选择非数字的字符
2.花括号:{n}、{n,m} 表示匹配指定的次数
如:Titen{3,4} 匹配n 最少3次 最多4次
3.圆括号()表示分组
二、次数的显示:
. 表示任意单个字符
* 表示0次或者多次(个)
+ 表示1次或者多次(个)
?表示1次或者0次(个)
三、匹配开头或者结束
^ 匹配文本开头
$ 匹配文本结束
注意多行模式或者单行模式: 默认的单行
如:
content = '''001-键盘价格-60 002-鼠标价格-70 003-显示器价格-80''' import re p = re.compile(r'^\d+', re.M) for one in p.findall(content): print(one)
运行结果:
001 002 003
去掉re.M,结果 001
$:
content = '''001-键盘价格-60 002-鼠标价格-70 003-显示器价格-80''' import re p = re.compile(r'\d+$', re.M) for one in p.findall(content): print(one)
运行结果:
60 70 80
去掉re.M,结果为:80(只是匹配结束位置)
四、反斜杠\ 转义
1.比如需要匹配字符串有点. 而且此时不需要它有其他特殊含义,只需要表达对应的意思,就需要\. 表示这个是一个字符串的点
如:我们.是中国人 需要匹配:我们.对应的表达式: .*\.
2.特殊字符
反斜杠后面接一些字符,表示匹配 某种类型
的一个字符。
\d 匹配0-9之间任意一个数字字符,等价于表达式 [0-9]
\D 匹配任意一个不是0-9之间的数字字符,等价于表达式 [^0-9]
\s 匹配任意一个空白字符,包括 空格、tab、换行符等,等价于表达式 [\t\n\r\f\v]
\S 匹配任意一个非空白字符,等价于表达式 [^ \t\n\r\f\v]
\w 匹配任意一个文字字符,包括大小写字母、数字、下划线,等价于表达式 [a-zA-Z0-9_]
缺省情况也包括 Unicode文字字符,如果指定 ASCII 码标记,则只包括ASCII字母
\W 匹配任意一个非文字字符,等价于表达式 [^a-zA-Z0-9_]
反斜杠也可以用在方括号里面,比如 [\s,.] 表示匹配 : 任何空白字符, 或者逗号,或者点
五、正则切割
import re names = '苹果; 相机, 纸巾, 鼠标, 大象 李小龙' namelist = re.split(r'[;,\s]\s*', names) print(namelist)
正则表达式 [;,\s]\s*
指定了,分割符为 分号、逗号、空格 里面的任意一种均可,并且 该符号周围可以有不定数量的空格。
六、替换
import re names = ''' <a av66771949/?p=> <a av46349552/?p=> <a av90571967/?p=> ''' newStr = re.sub(r'/av\d+?/', '/cn345677/' , names) print(newStr)
列如:
$ 在正则中代表匹配文末末尾,( )左右圆括号表示分组,所以要表达对应的字符串本意,需要加上转义符号,表达原本就是字符串,就需要\$、 \( 、\)这样表示
regexp = "\\${(.*?)\\((.*?)\\)}"
regexp = r"\${(.*?)\((.*?)\)}"
本文来自博客园,作者:Titen,转载请注明原文链接:https://www.cnblogs.com/chengxiazuohua/p/16728830.html