目录
正则表达式是用来匹配字符串的字符序列,在处理字符序列时,有很大便利。
3.1 字符含义
-
打印字符:
1、[...] 匹配 [...] 中的所有单字符;例如 [aeiou] 匹配字符串 "google runoob taobao" 中所有的eoua字母。
2、[^...] 匹配除了 [...] 中字符的所有字符;例如 aeiou 匹配字符串 "google runoob taobao" 中除了 eoua 字母的所有字母。
3、[.-.] 表示一个区间;例如[A-Z]匹配所有大写字母,[a-z] 表示所有小写字母。
4、. 匹配除换行符(\n、\r)之外的任何单个字符,相等于 \n\r。
5、[\s\S] 匹配所有;\s 是匹配所有空白符,包括换行,\S 匹配非空白符。
6、\w 匹配字母、数字、下划线;等价于 [A-Za-z0-9_]
7、\d 数字=={0-9}
-
非打印字符:
8、\cx 匹配由x指明的控制字符;例如, \cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 'c' 字符。
9、\n 匹配一个换行符。
10、\r 匹配一个回车符。
11、\s 匹配任何空白字符,包括空格、制表符、换页符、换行符等等。
12、\S 匹配任何非空白字符。
13、\t 匹配一个制表符。
14、\v 匹配一个垂直制表符。
15、\b 匹配单词的开始或结束。
16、\B 匹配非单词的开始或结束。
- 特殊字符:
17、$ 匹配输入字符串的结尾位置。如果设置了RegExp对象的Multiline属性,则$也匹配'\n'或'\r'。
18、^ 匹配输入字符串的开始位置,除非在方括号表达式中使用,当该符号在方括号表达式中使用时,表示不接受该方括号表达式中的字符集合。注意: 不能将限定符与定位符一起使用。
19、( ) 标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。
20、* 匹配前面的子表达式零次或多次。
21、+ 匹配前面的子表达式一次或多次。
22、? 匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。 注意: * 和 + 限定符都是贪婪的,因为它们会尽可能多的匹配文字,只有在它们的后面加上一个 ? 就可以实现非贪婪或最小匹配。
23、{n} n 是一个非负整数。匹配确定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o。
24、{n,} n 是一个非负整数。至少匹配n 次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。
25、{n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,"o{1,3}" 将匹配 "fooooood" 中的前三个 o。
26、\ 将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。
27、| 指明两项之间的一个选择。
若要匹配这些特殊字符,必须首先对字符转义,即,将反斜杠字符\ 放在它们前面。如\.
3.2 使用案例
python中支持正则表达式的包是re,直接导入即可。
- findall()函数
在字符串中找到正则表达式所匹配的所有子串,并返回一个字符列表,如果有多个匹配模式,则返回元组列表,如果没有找到匹配的,则返回空列表。
import re
str = "12 23 456"
result1 = re.findall(r'\d+',str)
print(result1) # ['12', '23', '456']
result2 = re.findall(r'(\w+)=(\d+)', 'set width=20 and height=10')
print(result2) # [('width', '20'), ('height', '10')]
剩余的慢慢码!狗命重要!!