正则表达式初识
来源:互联网 发布:美国注册营养师 知乎 编辑:程序博客网 时间:2024/04/29 22:08
正则表达式--元字符
- [ ]
-用来指定一个字符集合(字符直接是“或”的关系,不是一个特定的字符串,跟‘abc’不同):[abc],[a-z]
-在字符集中,元字符$不起作用[abc$],[$abc],元字符^在字符串尾不起作用[abc^],就是普通字符。
-元字符在字符集首表示匹配补集,[^abc]就是匹配除了a,b,c以外的字符。
- ^
-匹配行首,位于字符串首。制定规则res = r'^abc',为匹配行首是abc;规则s = r'^[abc]',为匹配行首是a,b,c.
- $
-匹配行尾,位于字符串尾。定规则res = r'abc$',为匹配行尾是abc;规则s = r'[abc]$',为匹配行尾是a,b,c.
- \
-反斜杠后可以加不同的字符表示不同的特殊意义
-也可以取消元字符:\\ 或\[
\d 匹配任何十进制数,相当于[0-9];
\D 匹配任何非十进制数,相当于[^0-9];
\s 匹配任何空白字符:相当于[\t\n\r\f\v];
\S 匹配任何非空白字符:相当于[^\t\n\r\f\v];
\d 匹配任何字母数字字符,相当于[a-zA-Z0-9_];#注:难怪很多密码或邮箱只允许下划线和字母数字。
\D 匹配任何非字母数字字符,相当于[^a-zA-Z0-9_]。
举个栗子:import rer = r'010-\d\d\d\d\d\d\d\d'#电话号码re.findall(r, '010-87654321')结果[010-87654321]#匹配电话号码格式,输出
- 重复
-正则表达式第一功能是能够匹配不定长的字符集,另一个功能就是可以指定正则表达式的一部分的重复次数。
- *
-指定前一个字符可以被匹配0次或更多次,而不是只有一次。匹配引擎会试着重复尽可能多的次数。
- +
-表示匹配一次或更多次。
-*和+之间的不同在于:*下,字符可以不出现(匹配0次),而+则要求至少出现一次。
- ?
-匹配一次或零次,可以认为用于标记某事物是可选的(0 or 1)。
再一个栗子:>>>r = r'^010-?\d{8}'#电话号码的规则,有人不会打-,所以用-?表示-可选>>>re.findall(r, '010-12345678')
['010-12345678']
- {m,n}
-其中m和n是十进制整数。意思是至少有m个重复,至多到n次重复。
三只栗子:>>>r = r'a{1,3}'>>>re.findall(r, 'aaaaa')
['aaa', 'aa']#aaaaa是5个a,而不是一个组合-忽略m,默认下边界为0 ;忽略n,会使上边界无穷大。
-{0, }等于*,{1, }等于+,而{0,1}则等于?。所以在应用中,优先选择*,+,?.
0 0
- C#----初识正则表达式
- 初识正则表达式
- 初识正则表达式
- 正则表达式-01 初识
- Java正则表达式初识
- 初识正则表达式
- 正则表达式初识
- 初识Java正则表达式
- 01-初识正则表达式
- 初识正则表达式
- 正则表达式初识
- Python正则表达式初识
- 初识java正则表达式
- 初识正则表达式
- 【Linux】正则表达式初识
- 初识正则表达式
- 初识正则表达式
- 正则表达式(初识笔记)
- 深度图像
- tomcat如何配置环境变量
- android framework audiofocus机制
- 简易记账app——布局
- iOS 程序引入framework 类别报错unrecognized selector sent to class
- 正则表达式初识
- C/C++ 编程实现 LTE Turbo编码
- js的最基础练习(看情况添加内容,连上一个博客)
- 顺序表应用1:多余元素删除之移位算法
- test
- ExtJs6.0 总结(2)
- 自定义控件其实很简单1/2
- 广播是否不会增加网络通信量?
- C++学习-诡异错误之rank