前言
正则表达式在自然语言处理中应用十分广泛,同时在日常的工程开发中也十分重要,本文,整理了作者常用的正则表达式用法,希望对大家有所帮助。
正则学习工具
- http://www.regexpal.com/
- http://rubular.com/
- McTracer
元字符介绍
符号 | 说明 |
---|
. | 默认匹配\n之外的任意字符 |
^ | 匹配字符起始位置 |
$ | 匹配字符结尾 |
\A | 只从字符串开始匹配,类似^ |
\Z | 匹配字符串结尾,类似$ |
\d | 匹配数字0 - 9 |
\D | 匹配非数字 |
\w | 匹配数字字母 |
\W | 匹配非数字字母 |
\s | 匹配空格 |
\S | 匹配空字符 \t \n \r |
\b | 匹配字符串边界,但不会消耗任何字符,只匹配一个位置 |
\B | 匹配不是单词开头或结束的位置 |
[abc] | 字符组,匹配包含括号内元素的字符 |
[^abc] | 匹配除了abc以外的任意字符 |
量词
普通量词
符号 | 说明 |
---|
? | 匹配 ? 前面的字符0次或1次(占有) |
* | 匹配 * 前面的字符0次或多次(贪婪) |
+ | 匹配 + 前面的字符1次或多次(懒惰) |
{m} | 匹配前一个(组)字符m次 |
{n, m} | 匹配前一个(组)字符[n, m]次,即重复n到m次 |
{n, } | 匹配前一个(组),重复n次或更多次 |
| | 匹配 | 左或者右的字符 |
懒惰限定符
符号 | 说明 |
---|
*? | 重复任意次,但尽可能少重复 |
+? | 重复1次或更多次,但尽可能少重复 |
?? | 重复0次或1次,但尽可能少重复 |
{n,m}? | 重复n到m次,但尽可能少重复 |
{n,}? | 重复n次以上,但尽可能少重复 |
捕获分词
pyhton中的说明
python | 说明 |
---|
(?P<\name>…) | python中可以返回匹配字典 |
re.match | 从头开始匹配完整的词 |
re.search | 匹配字符串中包含满足规则的字符,只返回一个 |
re.findall | 匹配字符串中包含满足规则的字符,返回全部,放在列表中 |
re.splitall | 以匹配的字符当做分隔符 |
re.sub | 匹配字符并替换 |
参考链接及推荐阅读:
https://www.cnblogs.com/zhou195/p/6516974.html
https://www.jianshu.com/p/62237b3e2ef9