标签:字符 常用 匹配 数字 python 位置 量词 模块 表达式
Day 25
正则模块
正则语法
正则表达式:一种匹配字符串的规则,由两种基本字符类型组成:原义(正常)文本字符和元字符。
程序领域的用途:
- 登录注册页的表单验证
- 爬虫
- 自动化开发 日志分析
元字符
指那些在正则表达式中具有特殊意义的专用字符
字符 | 描述 | 举例 |
---|---|---|
[] | 字符组:在一个位置上可能出现的各种字符,写法是 [可能出现的字符] | [0-9][A-Z][a-z] |
[^] | ^在字符组开头表示非,即匹配不是这些字符的内容 | [^123abc] 匹配不是123abc的其他字符 |
| | 或,匹配竖线任意一边的所有字符 | abc|123 表示匹配abc或者123 |
( ) | 分组,表示一个子表达式的作用域 | a(bc|1)3 其中|的作用域为()内的bc与1,匹配abc3与a13 |
\w | word 匹配一个位置的数字、字母与下划线 ,相当于[0-9A-Za-z_] | |
\d | digit 匹配一个位置的数字,相当于[0-9] | |
\s | space 匹配一个位置的空白字符(换行符包括回车,空格,tab也叫制表符) | |
\W | 与\w相反,相当于 [^0-9A-Za-z_] | |
\D | 与\d相反,相当于[^0-9] | |
\S | 与\s相反,匹配非空白字符 | |
\n | 匹配一个位置的回车 | |
\t | 匹配一个位置的制表符tab | |
[\d\D] | 匹配一个位置的所有字符,\d是数字能匹配上,\D非数字也能匹配上,类似的还有 [\w\W] [\s\S] | |
\b | 匹配某个字符为一个单词的边界,\b表示边界 | \bw 匹配 word的w, h\b 匹配hello的h |
^ | 除了[^]其他情况都表示以什么开头,整篇开头,不是行开头 | ^w 匹配开头的w字符 |
$ | 以什么结尾,整篇结尾,不是行结尾 | end |
. | 匹配除换行符 \n 之外的任何单字符 | |
\ | 将有特殊匹配意义的字符转译为普通字符 | . 表示匹配普通字符的一个点 |
以下为量词 | ||
{} | 匹配前面的子表达式多少次 | \d{5} 匹配5个数字 |
{n,} | 匹配前面的子表达式n到多次 | \d{2,} 匹配>=2个数字的字符 |
{n,z} | 匹配前面的子表达式n到z次 | \d{2,5} 匹配 >=2 <=5 个数字的字符 |
? | 匹配前面的子表达式0次或一次 | do(es)? do 与 does都能匹配上 |
+ | 匹配前面的子表达式1次或多次 | do(es)+ does与doeses 能匹配上 |
* | 匹配前面的子表达式0次或多次,是?与+的合集 | |
特殊用法 | ||
量词? | 量词后加一个?表示惰性匹配,在整个正则表达式能匹配上的情况下,匹配量词对于的子表达式的最少次数,量词后 不加?表示贪婪匹配 | a\d{2,5}?z a1234z能匹配上,虽然是惰性机制,但是以匹配上为前提,还要匹配后面的z |
补充说明:
字符组
表示在一个位置上可能出现的各种字符,写法是 [可能出现的字符] eg:[0-9a-b] [abc]
[]中可以是一个范围或者巨头的字母或数字
#[XX1-XX2]必须按ASCII从小到大的顺序写,不能写成[9-2] [z-c]
#一个[]表示匹配一个字符
[0-9] 匹配某一个位置为数字
[A-Z] 匹配某一个位置为大写字母
[a-z] 匹配某一个位置为小写字母
[0-9A-Za-z]匹配某一个位置为数字与字母
[2-5] 匹配某一个位置为2-5的数字
[5sjA] 匹配某一个位置为5sjA中的一个字符
量词
- 表达式加量词 默认贪婪匹配,使用回溯算法
- 表达式加量词加? 表示惰性匹配
回溯算法
惰性机制
标签:字符,常用,匹配,数字,python,位置,量词,模块,表达式 来源: https://www.cnblogs.com/huandada/p/15313948.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。