官方定义:正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的特殊字符、及这些特定字符的组合,
组成一个规则字符串,这个“规则字符串”用来表达对字符串的一种过滤逻辑
应用场景:判断某一个字符串是否符合规则 判断手机号,身份证号是否合法等
将符合规则的内容从一个庞大的字符串体系中提取出来 爬虫,日志分析等
字符组 (元字符中的一个)
在字符组中所有的字符都可以匹配任意一个字符位置上能出现的内容
如果在字符串中有任意一个字符是字符组中的内容,那么就是匹配上的项
[0-9] [a-z] [A-Z]
ascii编码小的值 指向编码大的值
[1-9] [0-9] [0-9a-fA-F](可以匹配数字,大小写形式的a-f,用来验证十六位进制字符)
元字符
\w (字母,数字,下划线)\W (非字母,数字,下划线) ‘word’
\d (数字) \D (非数字) ‘digit’
\s (任意的空白符) \S(非空白符) ‘space’
\n (换行符)
\t (Tab制表符)
^(开头)$(结尾)\b(一个单词的结尾) 与边界有关
|(或(长的在前)) ()(分组(对某些固定的内容做量词约束)) .(除了换行符以外的任意字符)
量词
?(0或1次(可有可无)) +(1或多次) *(0或多次)
{n}(重复n次) {n,}(重复n或更多次) {n,m}(重复n到m次)
\d+整数 \d+\.\d+小数 \d+\.\d+|\d+整数或小数 \d+(\.\d+)?整数或小数
贪婪匹配:正则会尽量多的帮我们匹配
默认贪婪 回溯算法
非贪婪匹配:尽量少的匹配
量词? 表示非贪婪 惰性匹配
.*?x 表示匹配任意长度任意字符遇到x立即停止
1 身份证号码是一个长度为15或18个字符的字符串, 2 如果是15位则全部 数字组成,首位不能为0; [1-9]\d{14} 3 如果是18位,首位不能为0 前17位全部是数字,末位可能是数字或x 4 5 6 [1-9]\d{16}[\dx][1-9]\d{16}[\dx]|[1-9]\d{14} 7 8 [1-9]\d{14}(\d{2}[\dx])? 9 10 http://tool.chinaz.com/regex/?qq-pf-to=pcqq.group 11 正则表达式检测
转义符
pattern = r‘\\n‘
s = r‘\n‘
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。