正则表达式
正则表达式:
正则表达式(Regular Expression,常简写为regex或者RE),又称规则表达式,它不是某个编程语言所特有的,是计算机科学的一个概念,通常被用来检索和替换符合某些规则的文本。目前,正则表达式已经在各种计算机语言(如Java、 C#和Python等)中得到了广泛的应用和发展。
在Python中,可以使用正则表达式进行与字符串相关的一些匹配,正则表达式是一种用来匹配字符串的强有力武器,它只和字符串打交道,设计思想是用一种描述行的语言来给字符串定义一个规则,凡是符合规则的字符串就认为它“匹配”,否则就不匹配。即从大段的文字中找到符合规则的内容!!!
字符组:
[ ] 写在中括号中的内容,都出现在下面的某一个字符的位置上都是符合规则的
[0-9] 匹配数字0-9
[a-z] 匹配a到z的小写字母
[A-Z] 匹配A到Z的大写字母
[a-zA-Z0-9] 匹配大小写字母+数字
[a-zA-Z0-9_] 匹配数字字母下滑线
元字符:
量词:
{n}表示 这个量词之前的字符出现n次
{n,} 表示这个量词之前的字符至少出现n次
{n,m} 表示这个量词之前的字符出现n-m次
? 表示匹配量词之前的字符出现 0次 或者 1次 表示可有可无
+ 表示匹配量词之前的字符出现 1次 或者 多次
* 表示匹配量词之前的字符出现 0次 或者 多次
. ^ $
正则表达 |
待匹配的字符 |
匹配到的结果 |
说明 |
结. |
结果结束结缘 |
结果结束结缘 |
匹配所有”海.”的字符 |
^结. |
结果结束结缘 |
结果 |
只从开头匹配”海.”匹配到了一个就会停 |
结.$ |
结果结束结缘 |
结缘 |
只匹配结尾的”海.”,同上面的相反 |
* + ? { }
正则表达 |
待匹配的字符 |
匹配到的结果 |
说明 |
结.? |
结果和结束和结缘 |
结果 结束 结缘 |
?表示重复零次或一次,即只匹配"结"后面一个任意字符 |
结.* |
结果和结束和结缘 |
结果和结束和结缘 |
*表示重复零次或多次,即匹配"结"后面0或多个任意字符 |
结.+ |
结果和结束和结缘 |
结果和结束和结缘 |
+表示重复一次或多次,即只匹配"结"后面1个或多个任意字符 |
结.{1,2} |
结果和结束和结缘 |
结果和 结束和 结缘 |
{1,2}匹配1到2次任意字符 |
注意:前面的*,+,?等都是贪婪匹配,也就是尽可能匹配,后面加?号使其变成惰性匹配
正则 |
待匹配字符 |
匹配结果 |
说明 |
结.*? |
结果和结束和结缘 |
结 结 结 |
惰性匹配 |
正则表达式的匹配特点 :
贪婪匹配,它会在允许的范围内取最长的结果
非贪婪模式/惰性匹配 : 在量词的后面加上?
.*?x 匹配任意非换行符字符任意长度 直到遇到x就停止
2019年11月18日