最近 因为工作需要进行nlp文本提取,提取一些案由文书里的相关信息,所以学习了正则表达式,现在将正则表达式总结一下:
- 正则表达式常见元字符
- 正则表达式正向非捕获,逆向非捕获
- 正则表达式正向捕获,逆向捕获
- 使用python中re模块中的正则相关方法
1. 正则表达式常见元字符?
更多常见的正则表达式符号查看
元字符 | 功能 | 备注 |
---|---|---|
. | 表示任意字符 | |
* | 表示0个或多个任意字符 | |
? | 表示前面的字符可能会出现也可能不会出现 | |
\d | 表示任意数字 | |
\s | 表示空白符和换行符 | |
\w | 匹配单词字符 [0-9] [a-z] [A-Z]等 | |
\D | 匹配非数字 | |
\S | 匹配非空白符 | |
\W | 匹配非单词字符 | |
[] | 列举可能出现的字符 | |
+ | 表示前面的字符必须出现一次或者一次以上 | |
^ | 匹配段落开始或者在[]中表示非 |
2. 正则表达式捕获组?
表达式 | 功能 | 备注 |
---|---|---|
(?:) | 不进行捕获元素的匹配 | |
(?=) | 正向肯定匹配 | |
(?<=) | 逆向肯定匹配,多个参数长度一致 | |
(?!) | 正向否定匹配 | |
(?<!) | 逆向否定匹配,多个参数长度一致 |
3. 常见使用的正则表达式
1、 匹配某个案件的案件线索来源
....年..月..日(?:早晨|早上|中午|傍晚|晚上|夜间|凌晨)..?(?:时许|□□)[,,].*(?=属本[□单]位.*案件)|
2、 匹配段落
[\s\S]*A 表示匹配到文本中出现的最后一个A截止
[\s\S]*?A 表示匹配到文本中出现的第一个A截止
3、匹配多个字符
\w*
4. python 中re模块方法使用
4.1 安装、引入re模块
pip install re
// python中引入正则模块
import re
4.2 re.findAll(pattern, text)方法使用
// findAll方法可以匹配文本中所有的符合正则表达式的所有数据
re.findAll(pattern, text)
4.3 re.search(pattern , text) 方法使用
// findAll方法可以匹配文本中所有的符合正则表达式的第一个数据
re.search(pattern, text)
4.4 replace(pattern , repl) 方法使用
// 文本类型的替换函数不支持使用正则表达式
replace(pattern, text)
4.5 re.sub(pattern, repl, string) 方法使用
// 第一个参数是进行替换的正则表达式,第二个参数是想替换成什么字符串
// 第三个参数是要进行替换的文本
re.sub(pattern, repl, string)
4.6 re.split(pattern, string, maxsplit=0) 方法使用
// 第一个参数是进行替换的正则表达式,第二个参数是要进行分割的字符串
// 第三个参数表示需要切割成多少份
re.split(pattern, string, maxsplit=0)
4.7 re.compile(pattern) 编译正则表达式方法使用
// 编译正则表达式,在第二个参数中可以加 re.S 表示进行段落匹配
re.compile(pattern)
结束语
- 正则表达式常见元字符入门,正则表达式常见使用,使用python处理文本。