首先在上一节关于正则表达式的基本匹配中讲到使用‘\d’来匹配数字0-9,同时在正则表达式中还有类似的匹配。
我们规定:在正则表达式的使用过程中,使用反斜杠‘\’加字母匹配常见的字符,具体的匹配规则如下图所示:
| 缩写字符分类 | 表示 |
| --- | --- |
| \d | 0到9的任何数字 |
| \D | 除0到9以外的任何字符 |
| \w | 任何数字、字母、下划线字符 |
| \W | 除数字 字母 下划线以外的任何字符 |
| \s | 空格、制表符、换行符 |
| \S | 除空格、制表符、换行符以外的任何字符 |
同时在正则表达式的使用过程中,re模块中还有另外一种读取文本匹配内容的方法:findall()方法。
该方法与我们之前所讲的group()方法不同,re模块中的group()方法只能匹配文本中的第一个符合要求的匹配对象,而findall()方法则匹配文本中所有符合要求的内容。
并且以列表的形式返回所有符合要求的匹配。对比实现效果代码如下:
search()和findall()方法比较
import re
charRegex = re.compile(r'\d\d\d-\d\d\d\d-\d\d\d\d')
text = 'the tel is 123-4567-8910 and 456-7891-1234 and 789-1234-5678'
mo = charRegex.search(text)
print('search()方法的匹配结果:')
print(mo.group())
print('findall()方法的匹配结果:')
print(charRegex.findall(text))
.
在使用正则表达式的时候我们通常会需要使用这些匹配字符以外的东西,如我们特定匹配某一个字母或数字。
因此在Python的re模块中设定,在建立正则表达式的时候可以使用‘[]’中括号来特定设定要匹配的字符,这样在匹配文本的时候,就会特定匹配中括号里面的内容,效果代码如下:
建立自己的字符匹配
import re
charRegex = re.compile(r'[abcd3]')
text = 'the tel is 456-7891-1234 and 789-1234-5678'
print(charRegex.findall(text))
.
在使用正则表达式进行匹配的时候,我们可能往往会因为大小写字母的匹配而感到烦恼。
面试题当然不止这些,一个系列一套题,由于文章篇幅原因,我就不一一例举出来了。小编这里还要花时间全部整理一下,如果你需要这些面试题,可以点击这里向小编索要。
考一考
- 在 Java 中,什么叫观察者设计模式(observer design pattern)?
- 使用Spring Cloud有什么优势?
- 缓存穿透、缓存击穿、缓存雪崩解决方案?
知道答案吗?欢迎在下方留言交流。
Hi~ o(* ̄▽ ̄*)ブ小编更新了一份“金三银四”面试资源包,在后台私信即可免费领取,手慢无~~~