导图社区 正则表达式思维导图
下图梳理了正则表达式的基础知识,包括正则表达式基础、Python、SQL、MySQL、正则表达式,内容丰富全面,赶快收藏下图学习吧!
编辑于2021-08-21 11:48:29下图梳理了正则表达式的基础知识,包括正则表达式基础、Python、SQL、MySQL、正则表达式,内容丰富全面,赶快收藏下图学习吧!
Markdown是一种纯文本格式的标记语言。通过简单的标记语法,它可以使普通文本内容具有一定的格式。由于Markdown的轻量化、易读易写特性,并且对于图片,图表、数学式都有支持,许多网站都广泛使用Markdown来撰写帮助文档或是用于论坛上发表消息。
对于李白出生地存在争议。据说出生在碎叶城,李白自称祖籍陇西成纪(今甘肃省天水市秦安县),据《新唐书》称,李白乃先世西凉武昭王李嵩之后,与李唐皇室同宗。据《旧唐书》记载,李白之父李客为任城尉。而据郭沫若考证,李白出生于吉尔吉斯碎叶河上的碎叶城,属唐安西都护府(今楚河州托克马克市)。
社区模板帮助中心,点此进入>>
下图梳理了正则表达式的基础知识,包括正则表达式基础、Python、SQL、MySQL、正则表达式,内容丰富全面,赶快收藏下图学习吧!
Markdown是一种纯文本格式的标记语言。通过简单的标记语法,它可以使普通文本内容具有一定的格式。由于Markdown的轻量化、易读易写特性,并且对于图片,图表、数学式都有支持,许多网站都广泛使用Markdown来撰写帮助文档或是用于论坛上发表消息。
对于李白出生地存在争议。据说出生在碎叶城,李白自称祖籍陇西成纪(今甘肃省天水市秦安县),据《新唐书》称,李白乃先世西凉武昭王李嵩之后,与李唐皇室同宗。据《旧唐书》记载,李白之父李客为任城尉。而据郭沫若考证,李白出生于吉尔吉斯碎叶河上的碎叶城,属唐安西都护府(今楚河州托克马克市)。
正则表达式
基础
定义
一些用来匹配和处理文本的字符串
正则表达式是内置于其他语言或者软件产品里的"迷你"语言。
作用
搜索
替换
需要学习
特殊语法(容易掌握)
挑战
运用语法把实际问题分解为可由正则表达式解决的子问题
指令
语言使用
软件中
菜单
对话框
程序中
函数
类
在不同的应用程序、语言中语法和功能可能会有明显的差异
Python
模块
re
在使用之前,必须用re.compile将正则表达式编译成对象。
re.compiler接受可选的标志,例如re. IGNORECASE (表示搜索的时候不区分字母大小写)。
re.VERBOSE可协助调试正则表达式。
函数
preg_grep( ):执行搜索并以数组形式返回匹配结果。
findall( ):查找所有子串并以列表形式将其返回。
finditer( ):查找所有子串并以迭代器形式将其返回。
match( ):在字符串的开头执行正则表达式搜索。
search( ):搜索字符串中的所有匹配项。
split( ):将字符串转换成列表,在模式匹配的地方将其分割。
sub( ):用指定的子串替换匹配项。
subn( ):返回一个字符串,其中匹配项被指定的子串替换。
如果没有匹配, match ()和search()将返回None
SQL
区别
REGEXP_LIKE代替SQL的LIKE
区分字母大小写匹配
参数c
不区分字母大小写匹配
参数i
匹配换行符
参数n
忽略空白字符
参数x
官道字符|可用作OR
函数
REGEXP_LIKE
可以匹配数据类型
VARCHAR2(oracle提供的独有的数据类型)
CHAR
NVARCHAR2
NCHAR
CLOB
NCLOB
MySQL
正则表达式
匹配单个字符
理解
正则表达式可以包括普通文本,甚至可以只包括普通文本。
普通文本
eg.1 Hello,my name is Ben.Please visit my website at http://www.forta.com/.
正则表达式:Ben
eg.2 Hello,my name is Ben.Please visit my website at http://www.forta.com/.
正则表达式:my
字符.
可以匹配任意单个字符、字母、数字、字符.本身
在绝大多数的正则表达式实现里,.就不能匹配换行符\n
注意
匹配特殊字符.
\.
\元字符:表示这个字符有特殊含义,代表的不是字符本身。
匹配一组字符
匹配多个字符中的某一个
集合[]
如[ns]a只会匹配na和sa
但是如cna或者xna也会被匹配出,位置匹配问题在后续学习。
字符集合在不需要区分字符大小写的搜索操作里比较常见。
利用字符集合区间
特殊元字符
[0-9]
->
[0123456789]
[A-Z]
->
匹配从A到Z的所有大写字母
[a-z]
->
匹配从A到Z的所有小写字母
[A-Z]
->
匹配从A到a的所有字母
注意:1.避免首字符>尾字符 2.-(连字符)是一个特殊的元字符,它只有出现在[和]之间的时候才是元字符。
[A-Za-z0-9]
->
[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789]
查找排出指定字符
^
排出某个字符集合
eg. [^0-9] #排出0到9的数字
注意: ^字符后面的字符或字符区间都会起效果。 [ns]a[^0-9]\.xls->sam1.xls(排出此项) [ns]a[^0-9]\.xls->1sam.xls(会检索到此项)
元字符
特殊含义
\
转意字符
.
匹配任意单个字符
在绝大多数的正则表达式实现里,.就不能匹配换行符\n
注意
[ ]
字符集合
匹配空白字符
制表符
\t
table表
换行符
\n
换页符
\f
回车符
\r
垂直制表符
\v
Backspace
[\b]
\s #任何一个空字符串(等价于[\f\n\r\t\v]) \S #任何一个非空白字符串(等价于[^\f\n\r\t\v]) 注意:匹配退格符的\b不在其中
匹配数字
数字
\d
等价于[0-9]
非数字
\D
等价于[^0-9]
匹配字母数字
字母数字&_
\w
等价于[a-zA-Z0-9_]
空格和连字符不属于\w
非字母数字&_
\W
等价于[^a-zA-Z0-9_]
匹配十六进制或八进制数值
极少用到
POSIX字符类
[:alnum:]
任何一个字母或数字(等价于[a—ZA—z0—9])
[:alpha:]
任何一个字母(等价于[a—zA—Z]
[:digit:]
任何一个数字(等价于[0-9])
[:lower:]
任何一个小写字母(等价于平[a-z])
[:upper:]
任何一个大写字母(等价于[A-Z])
[:blank:]
空格或制表符(等价于[\t ])
[:space:]
任何一个空白字符,包括空格(等价于[\f\n\r\t\v ])
[:cnctrl:]
ASCII控制符(ASCII 0到31,再加上ASCII 127)
[:print:]
任何一个可打印字符
[:graph:]
和[:print:]一样,但不包括空格
[:punct:]
既不属于[:alnum],也不属于[:cntrl:]的任何一个字符
[:xdigit:]
任何一个十六进制数字(等价于[a-fA-F0-9])
匹配一个或多个字符
贪婪元字符
+
匹配+号前边的字符一个或多个
eg. \w+
匹配零个或多个字符
贪婪元字符
*
匹配*号前边的字符零个或多个
eg. \w*
匹配零个或一个字符
懒惰元字符
?
匹配?号前边的字符零个或一个
eg. \w?
匹配的重复次数
具体的重复匹配
{次数}
匹配次数的范围
{最低次,最高次}
匹配至少重复多少次
{最低次,}
防止过渡匹配
*?
匹配*出现0次或者1次
位子匹配
边界
\b匹配内容\b
\b是匹配位置而不是字符
\B~\B
匹配~前后都不是单词的内容
eg. \B-\B
匹配一个前后搜不是单词边界的连字符
字符串边界
字符开通匹配符
^
注意只有当[^~]
在[^表排除
字符结尾匹配符
$
多行模式
(?m)
多行模式迫使正则表达式引擎将换行符\n视为->字符串分隔符
->
^既可以匹配字符串开通也可以匹配换行符之后的起始位置(新行)
->
$既可以匹配字符串的结尾,还能匹配换行符之后的结束位置
(?m)必须出现在整个模式的最前面
使用子表达式
作用
对表达式进行分组
问题
?
*
+
{2}
只作用于紧挨着它的前一个字符或元字符
由于"问题",引入对表达式进行分组
分组元字符
( )
子表达式的嵌套
反向引用
指的是这些实体引用的是先前的子表达式( )
\1 #匹配第一个子表达式
\2 #匹配第二个子表达式
……
\n #匹配第n个子表达式
替换操作
(子表达式1)(子表达式2)……(子表达式n) $1 $2 …… $n
字母大小写转换
常用元字符
\E
\L
区间结束符 \L(小写)或\U(大写)转换
组合\L[字符|(子表达式)]\E
字母区间[字符|(子表达式)]都变成小写
\U
区间结束符 \L(小写)或\U(大写)转换
组合\U[字符|(子表达式)]\E
字母区间[字符|(子表达式)]都变成大写
\l
把下一个字符转换为小写
\u
把下一个字符转换为大写
环视
向前查看
(?=查看内容) #查看内容匹配“查看内容”,但是排出显示
向后查看
(?<=查看内容) #同上
向前查看模式的长度是可变的, 向后查看只能是固定长度
嵌入式条件
正则表达式里边的条件
?来定义
反向引用条件
仅在一个前面的子表达式得以匹配的情况下才允许使用另外一个表达式
语法
(?(backreference)true)
(?(backreference)true|false)
环视条件
允许根据向前或向后查看操作是否成功来决定要不要执行表达式