正则表达式
-
处理对象:字符串,python中使用re模块
-
语法规则
* 匹配0次或多次 + 匹配1次或多次 ? 匹配0次或1次 \ 转义字符,使字符改变原来的意思 ^ 匹配字符串开头 $ 匹配字符串结尾 | 或,匹配|左右表达式任意一个,从左到右匹配,如果|没有包括在()中,则它的范围是整个正则表达式 {} {m}匹配前一个字符m次,{m,n}匹配前一个字符m至n次,{m,}匹配m至无限次 [] 字符集,多选一,对应的位置可以是字符集中任意字符分组表达式作为一个整体,可以后接数量词。 [a-z]从a到c [0-9] 0-9的数字 [09-] 0、9、-三个字符 [0\-9] 0、9、-三个字符 () 被括起来的表达式将作为分组,从表达式左边开始没遇到一个分组的左括号“(”,编号+1。分组表达式作为一个整体,可以后接数量词。表达式中的|仅在该组中有效。
-
预定义字符集
\d 数字[0-9] \D 非数字[^\d] \s 匹配任何空白字符[<空格>\t\r\n\f\v] \S 非空白字符[^\s] \w 匹配包括下划线在内的任何字字符[A-Z a-z 0-9 _] \W 匹配非字母字符,即匹配特殊字符 \A 仅匹配字符串开头,同 ^ \Z 仅匹配字符串结尾,同 $ \b 匹配\w和\W之间,即匹配单词边界匹配一个单词边界,也就是指单词和空格间的位置 \B [^\b] . 匹配除换行符 \n 外的字符
-
特殊分组用法
(?P<name>str) 分组,除了原有的编号外再指定一个额外的别名 (?P<id>abc){2} abcabc (?P=name) 引用别名为<name>的分组匹配到字符串 (?P<id>\d)abc(?P=id) 1abc1 5abc5 \<number> 引用编号为<number>的分组匹配到字符串 (\d)abc\1 1abc1 5abc5
-
例子
-
字符 \d 的理解
import re regex = re.compile(r'\d+') s = 'abc123adawae12edqwe657' res = re.findall(regex, s) print(res) # ['123', '12', '657']
-
字符 \b 的理解
import re regex1 = r'\btina' res1 = re.findall(regex1, 'tiantinaaaa') print(res1) # [] regex2 = r'\btina' res2 = re.findall(regex2 ,'tian tinaaaa') print(res2) # ['tina'] regex3 = r'\btina' res3 = re.findall(regex3, 'tian#tinaaaa') print(res3) # ['tina'] regex4 = r'\btina\b' res4 = re.findall(regex4, 'tian#tina@
-