正则表达式
- 使用
- Import re
- 包含
- 匹配模式
- 贪婪模式
- 非贪婪模式
- 字符
- 匹配字符
- 转义字符
- 匹配模式
- 常见的函数:
- Search:匹配在字符串中搜索到的第一个值,匹配成功返回match对象,匹配失败则返回none。例如:reg= r"(\d)" m = re.search(reg,"aaa") 输出m为none
-
因为\d是匹配数字,而m给出的只有代码,导致匹配失败
Match:从字符串的起始位置开始匹配,但是只能匹配到第一个符合条件的值,如果匹配不成功返回none
Findall:寻找在整个字符串中匹配的值,符合条件的全部返回
Split:切分,可以切分单字符,或者指定多个字符,指定多个字符需要放在【】当中,比如切分,。就需要r"([,.])"
Sub:相当于正则里的替换,
例如:m = re.sub(r"(\d)","2","111,333,444"),意思就是把选中的内容全部替换成2
compile:用于编译正则表达式,生成一个正则对象,供两个函数使用
例如:mstr= "<a> <h2> hello <a> <h2>"
mpat =r"<(?p<aa>\w{1})><?p<hh>\w{2}>(.*)</(?p=hh)><(?p=aa)>"
Ret = re.match(mpat,mstr)
- 正则表达式单个字符
- 。:匹配任意一个字符(除了\n)
-
[] :匹配[]中列举的字符
\d:匹配数字,0-9
\D:匹配非数字
\s:匹配空白,就是空格、tal键等
\S:匹配非空白
\w:匹配单词字符:a-z,A-Z,0-9,_
\W:匹配非单词字符
- 正则表达式数量修饰符
- *:匹配前一个字符出现0次或者无限次,这个字符可以出现也可以不出现
- 例如:re.findall("(.*)在不违反",old_value)
- +:匹配前一个字符出现1次或者无限次,这个字符至少出现一次
- 例如:re.findall("(.+)在不违反",old_value)
- ?:匹配前一个字符出现1次或者0次,要么有,要么没有
- {m}:匹配前一个字符出现m次
- {m,}:匹配前一个字符至少出现m次
- {m,n}:匹配前一个字符出现从m到n次
- *:匹配前一个字符出现0次或者无限次,这个字符可以出现也可以不出现
- 补充
- 一个括号代表一个小分组,例如:
-
贪婪模式
输出结果就是全部
-
非贪婪模式
输出结果就是一个