Regular Express - 正则表达式

Regular Express - 正则表达式

正则表达式(Regular Expression/regex/regexp),又称正规表示式,或者简称正则式,是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。

正则表达式经常被应用于大规模批量的文本查找和修改,得到如C++,Java,php,Python,Perl等许多高级编程语言的支持,其中本文中将会使用Python语言作为例子来作为的正则表达式的应用语言。

正则表达式功能字符 #

正则表达式一般功能字符如下,如果希望使用原本字符需要转义字符转义

| \ | . | ? | + | * | ( | ) | [ | ] |

正则表达式表 功能符速查表 #

匹配对象如果有下划线,则真正匹配到的只有下划线部分

字符描述例子匹配对象
普通字符匹配相同的单个字符bcdabcde
特殊字符特殊功能,介绍如下\..
|或运算,选择左右其中一个re1|re2re1 或 re2
.匹配除\n之外的任意字符.a
^匹配字符串起始^strstring
$匹配字符串末尾ing$string
?匹配0/1次左端的正则式a?bab 或者 b
*匹配0次及以上左端正则式a*aaa
+匹配1次及以上左端正则式b+bbbb
()对正则进行分组(ab)+ababab
[…]匹配其中字符集的任意一个[abc]a 或 b 或 c
[.-。]匹配.到。之间任意一个字符[a-z]a 或 d 等
[^…]不匹配此字符集中任何一个字符[^a-z]1 等非字母
{N}匹配N次左端的正则式(ab){2}abab
{N,M}匹配M-N次左端的正则式(ac){1,2}ab 或 abab

正则表达式 特殊字符 #

字符描述例子匹配对象
\d\d匹配任何一个十进制数字,\D不匹配任何数字\d\d\d123
\w\w匹配任何一个字母字符,\W不匹配任何字母字符\w\wab
\s\s匹配任何空格字符,\S不匹配任何空格字符I\sLikeI Like
\b\b匹配任何单词边界,\B不匹配任何单词边界\bLikeI Like
\A(\Z)\A匹配字符串的开始,\Z匹配字符串的结尾\AcarHey.Car stop.

正则表达式样例 #

匹配对象如果有下划线,则真正匹配到的只有下划线部分

例子匹配对象举例描述
HelloHello匹配特定单词
^[0-9]*$123单独的数字
^\d{8}$12345678单独的8位的数字
^(-|+)?\d+(.\d+)?$-12.33正数、负数、和小数
^[A-Za-z0-9]+$Kingfish404英文和数字
^\w+([-+.]\w+)@\w+([-.]\w+).\w+([-.]\w+)*$jinyu929@qq.comEmail地址

Python 正则表达式应用 #

# 引入python自带的正则包
import re 
m = re.search('def', 'abcdef')
print(m.group(0))
# 输出结果: 'def'
import re
text = "He was carefully disguised but captured quickly by police."
regExp = "\w+ly" # 正则表达式
result = re.findall(r"\w+ly", text) # 参数为(r"正则式",待匹配式子)
print(result)
# 输出结果:['carefully', 'quickly']

# 下方语句功能与上方相同
result = re.findall(regExp, text)
print(result)
result = re.compile(regExp).findall(text)
print(result)
# 输出结果均为:['carefully', 'quickly']

更详细的应用见REF中的Python文档

REF #

PS:本文其实很早就建好了文件,不过之前一直忘记写了。