教你学会正则表达式

'''
Created on 2019年12月2日

@author: 安阳师范学院某菜鸡
'''

'''行定位符'''
'''
 行定位符就是用来描述字符串的边界.'^'表示行的开始,'$'表示行的结尾
 假设给定字符串为"abccba"
 那么^ab就可以匹配到,因为他表示匹配以ab开头的字符串,^ba就不可以了,ba$可以,因为ba在行尾
 如果要求匹配的字符串在任意位置,如cc,那么直接用cc匹配就可以
'''

'''元字符'''
'''
\ba\w*\b
\b 表示从某个单词开始处 如\表示从某个单词开始,匹配字母a(\ba)
接着是任意数量的字母或数字(\w*),最后是单词结束处(\b)
上述表达式可以匹配"asoft" "abook" "al123456"等
'''
'''
.                    匹配除换行符以外的任何字符
\w        匹配子母数字下划线或汉子
\s        匹配任意的空格符
\d        匹配数字
\b        匹配单词的开始或结束
^                     匹配字符串开始
$                    匹配字符串结束
'''

'''限定符'''
'''
?        匹配前面的字符零次或一次        colou?r该表达式可以匹配colour和color
+        匹配前面的字符一次或多次        go+gle    可以匹配gogle gooooo...gle
*        匹配前面的字符零次或多次        go*gle        匹配ggle goooooo...gle
{n}    匹配前面的字符n次            go{2}gle            google
{n,}    匹配前面的字符至少n次    go{1}gle            gogle    gooo...gle
{n,m}    匹配至少n次,至多m次
'''

'''字符类'''
'''
匹配指定字母    [aeiou]     如:c[aeiou]lor    可以匹配calor celor ... culor
同理指定标点[!?~]
某一范围[0-9]    完全等同于\d
[a-z0-9A-Z]完全等同\w
'''

'''排除字符'''
'''
^表示匹配不符合中括号内的任意字符
如:[^a-zA-Z]表示匹配不是字母的任意字符
当然,如果不在中括号内表示匹配行的开始
'''

'''选择字符|'''
'''
^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$ 表示要么是满足|前面的要么满足|后面的
仔细观察该示例,他表示的其实是身份证的匹配
身份证有只有15位的纯数字的
也有18位的,如果是18位的,可能钱17位是数字,最后一个是x或X,也可能18位都是数字
仔细观察,发现,由|分割开的不同表达式需要加小括号,并且最开头的表达式与结尾的表达式不需要加括号
从行首开始到行末结束一定要加上^或$
'''

'''转义字符\''''
'''
正则表达式中的转义字符与python,java,c,c++等诸多语言中的转义字符大同小异
如:
如需匹配ip地址,如果像下面这样
[1-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{0,3}
他甚至会匹配111011101110111
因为前文已经介绍过.可以匹配除了换行符以外的任意字符
这时就需要加上转义字符了
正确的写法是:
[1-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{0,3}
'''

'''分组()'''
'''
通过身份证的例子,大家应该对小括号已经有所了解,没错,()就是用来限定作用范围的,如:
(thir|four)th 就是匹配thirth或fourth
thir|fourth 就是匹配thir或fourth
'''

'''
Created on 2019年12月2日

@author: 安阳师范学院某菜鸡
'''
'''行定位符'''
'''
 行定位符就是用来描述字符串的边界.'^'表示行的开始,'$'表示行的结尾
 假设给定字符串为"abccba"
 那么^ab就可以匹配到,因为他表示匹配以ab开头的字符串,^ba就不可以了,ba$可以,因为ba在行尾
 如果要求匹配的字符串在任意位置,如cc,那么直接用cc匹配就可以
'''
'''元字符'''
'''
\ba\w*\b
\b 表示从某个单词开始处 如\表示从某个单词开始,匹配字母a(\ba)
接着是任意数量的字母或数字(\w*),最后是单词结束处(\b)
上述表达式可以匹配"asoft" "abook" "al123456"等
'''
'''
.                    匹配除换行符以外的任何字符
\w        匹配子母数字下划线或汉子
\s        匹配任意的空格符
\d        匹配数字
\b        匹配单词的开始或结束
^                     匹配字符串开始
$                    匹配字符串结束
'''
'''限定符'''
'''
?        匹配前面的字符零次或一次        colou?r该表达式可以匹配colour和color
+        匹配前面的字符一次或多次        go+gle    可以匹配gogle gooooo...gle
*        匹配前面的字符零次或多次        go*gle        匹配ggle goooooo...gle
{n}    匹配前面的字符n次            go{2}gle            google
{n,}    匹配前面的字符至少n次    go{1}gle            gogle    gooo...gle
{n,m}    匹配至少n次,至多m次
'''
'''字符类'''
'''
匹配指定字母    [aeiou]     如:c[aeiou]lor    可以匹配calor celor ... culor
同理指定标点[!?~]
某一范围[0-9]    完全等同于\d
[a-z0-9A-Z]完全等同\w
'''
'''排除字符'''
'''
^表示匹配不符合中括号内的任意字符
如:[^a-zA-Z]表示匹配不是字母的任意字符
当然,如果不在中括号内表示匹配行的开始
'''
'''选择字符|'''
'''
^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$ 表示要么是满足|前面的要么满足|后面的
仔细观察该示例,他表示的其实是身份证的匹配
身份证有只有15位的纯数字的
也有18位的,如果是18位的,可能钱17位是数字,最后一个是x或X,也可能18位都是数字
仔细观察,发现,由|分割开的不同表达式需要加小括号,并且最开头的表达式与结尾的表达式不需要加括号
从行首开始到行末结束一定要加上^或$
'''
'''转义字符\''''
'''
正则表达式中的转义字符与python,java,c,c++等诸多语言中的转义字符大同小异
如:
如需匹配ip地址,如果像下面这样
[1-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{0,3}
他甚至会匹配111011101110111
因为前文已经介绍过.可以匹配除了换行符以外的任意字符
这时就需要加上转义字符了
正确的写法是:
[1-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{0,3}
'''
'''分组()'''
'''
通过身份证的例子,大家应该对小括号已经有所了解,没错,()就是用来限定作用范围的,如:
(thir|four)th 就是匹配thirth或fourth
thir|fourth 就是匹配thir或fourth
'''

发布了99 篇原创文章 · 获赞 13 · 访问量 2699

猜你喜欢

转载自blog.csdn.net/qq_44378358/article/details/103354678