ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## **无所不能的正则** <br> ### **1.什么是正则?为何无所不能?** 正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符")。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。 正则表达式是繁琐的,但它是强大的,学会之后的应用会让你除了提高效率外,会给你带来绝对的成就感。 <hr> ### **2.正则在改变我们** 尽管我们对正则一无所知,但是并不阻碍我们去简单的使用! <img src="https://gitee.com/Wiliam01/img_all/raw/master/%E4%B8%BE%E4%B8%AA%E6%A0%97%E5%AD%90.jpg" width="200px" height="60px;"> Q&A: 我们在Win 系统中,可能会常常用到找文件的功能,假设你要找的文件很多,难以一个一个找到的时候,你该如何是好? 你很可能使用?和\*通配符来查找硬盘上的文件,?通配符匹配文件名中的 0 个或 1 个字符,而\*通配符匹配零个或多个字符。 ``` >> dir 1??????.txt 1小狗子pdf.txt 1猪小明jpg.txt ``` 使用\*字符代替?字符扩大了找到的文件的数量 ``` >> dir *.txt 1小狗子pdf.txt 1猪小明jpg.txt 2三娃子png.txt 2四海子pdd.txt ``` 尽管这种搜索方法很有用,但它还是有限的。通过理解 \* 通配符的工作原理,引入了正则表达式所依赖的概念,但正则表达式功能更强大,而且更加灵活。 <hr> ### **3.复杂的开胃菜** <img src="https://gitee.com/Wiliam01/img_all/raw/master/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F.jpg" > - ^为匹配输入字符串的开始位置。 - \[0-9\]+匹配多个数字,\[0-9\]匹配单个数字,+匹配一个或者多个。 - abc$匹配字母abc并以abc结尾,$为匹配输入字符串的结束位置。 <hr> ### **4.为什么使用正则表达式** * 测试字符串内的模式。 例如,可以测试输入字符串,以查看字符串内是否出现电话号码模式或信用卡号码模式。这称为数据验证。 * 替换文本。 可以使用正则表达式来识别文档中的特定文本,完全删除该文本或者用其他文本替换它。 * 基于模式匹配从字符串中提取子字符串。 可以查找文档内或输入域内特定的文本。 <hr> ### **5. Python 正则表达式** re 模块使 Python 语言拥有全部的正则表达式功能,re模块是自带的库,无需进行安装。 <br> 正则常见匹配模式,需要牢记于心: | 模式 | 描述 | | --- | --- | | \w | 匹配字母数字及下划线 | | \W | 匹配非字母数字下划线 | | \s | 匹配任意空白字符,等价于 [\t\n\r\f]. | | \S | 匹配任意非空字符 | | \d | 匹配任意数字,等价于 [0-9] | | \D | 匹配任意非数字 | | \A | 匹配字符串开始 | | \Z | 匹配字符串结束,如果是存在换行,只匹配到换行前的结束字符串 | | \z | 匹配字符串结束 | | \G | 匹配最后匹配完成的位置 | | \n | 匹配一个换行符 | | \t | 匹配一个制表符 | | ^ | 匹配字符串的开头 | | $ | 匹配字符串的末尾。 | | . | 匹配任意字符,除了换行符,当re.DOTALL标记被指定时,则可以匹配包括换行符的任意字符。 | | […] | 用来表示一组字符,单独列出:[amk] 匹配 ‘a’,‘m’或’k’ | | [^…] | 不在[]中的字符:[^abc] 匹配除了a,b,c之外的字符。 | | * | 匹配0个或多个的表达式。 | | + | 匹配1个或多个的表达式。 | | ? | 匹配0个或1个由前面的正则表达式定义的片段,非贪婪方式 | | {n} | 精确匹配n个前面表达式。 | | {n, m} | 匹配 n 到 m 次由前面的正则表达式定义的片段,贪婪方式 | | a\|b | 匹配a或b | | ( ) | 匹配括号内的表达式,也表示一个组 | a