
1.正则表达式正则表达式Regular Expression是一种用于描述字符串匹配模式的工具由普通字符与元字符组成可用于搜索、验证、提取和替换文本在 Python、JavaScript、Java 等语言中广泛支持。1.1什么是正则表达式正则表达式是一种文本模式匹配语言通过特定字符组合来描述一类字符串用于判断、查找、提取或替换文本内容。它最早源于数学模型后在 Unix 工具如grep中普及如今几乎所有编程语言都支持。1.2常用元字符与含义以下元字符是正则表达式的核心.匹配除换行外任意字符^匹配字符串开头$匹配字符串结尾*重复零次或多次重复一次或多次?重复零次或一次{m,n}重复 m 到 n 次[]字符集合如[a-z]|逻辑“或”()分组\d数字0–9\w字母、数字、下划线\s空白字符可以搜一个网站练习正则表达式regex101: Online Regex Tester, Builder Debugger2.定位类找位置2.1 纯文本匹配不相匹配applepie里的apple怎么办2.2^:字符串开头匹配必须从文本的最开头开始2.3$:字符串结尾匹配必须到文本的最末尾结束2.4 \b:单词边界3.字符类3.1 . (点)代表任意一个字符3.2\d找数字代表一个数字也就是 0 到 9 之间的任意一个注意一个\d只代表一个数字如果要找连续的多个数字就要写多个\d或者用咱们前面学过的量词比如3.3\D非数字代表一个“不是数字”的字符也就是除了 0 到 9 之外的任何字母、空格、符号等3.4\w单词字符代表一个“单词字符”\w认这三样东西英文字母a-zA-Z数字0-9下划线_不认空格、标点符号比如逗号、感叹号3.5\W (非单词字符)除了字母、数字、下划线之外的任何东西比如空格、标点3.6\s (空白)\s专门用来抓那些“肉眼看不见但占着位置”的字符包括哪些呢主要有这三样空格制表符换行符3.7\S (非空白)抓除了空白以外的所有东西字母、数字、标点等3.8[ ]中括号括号里面的这几个字里随便挑一个就行例如[aeiou]这就是找元音字母[^aeiou]找辅音字母[a-z]找所有小写字母4. 量词类4.1 *星号用来修饰它左边挨着的那个东西意思是“这个东西可以出现0 次、1 次、或者无数次。”4.2加号修饰它左边挨着的那个东西。但它的意思是“这个东西必须出现至少 1 次可以出现无数次但绝对不能是 0 次。”注意空格也是字符第一行和第三行是一个经典的现象(贪婪匹配)所以把ct也加进去了如何防止这个现象呢加一个(问号)就行4.3?问号修饰它左边挨着的那个东西意思是“这个东西可以有 0 次也可以有 1 次。”简而言之就是可有可无4.4 {}大括号量词精确控制注意1.大括号只能修饰它前面紧挨着的那一个东西。比如\d{3}只能修饰\d。2.大括号里千万不要随便加空格{2, 4}在很多语言里会被当成“要匹配两个数字、一个逗号、一个空格、一个数字”3.如果你真的想找文本里的大括号本身也要用反斜杠\{和\}5.逻辑与分组5.1|竖线代表或者5.2()小括号代表分组打包把括号里面的东西当成一个整体打包盒。你可以对这个小整体加量词或者用|分隔捕获提取(abc)捕获分组。打包并且把匹配到的内容单独抓出来编号从 1 开始。(?:abc)非捕获分组。只打包不单独抓取因为之前的网站看不出差别所以换了一个网站6.实战测试6.1贪婪与懒惰贪婪默认*、、{}—— 能拿多少拿多少。懒惰加?*?、?、{}?—— 能拿多少拿多少一遇到后面的条件就停。6.2中国大陆手机号\b1[3-9]\d{9}\b提取电话号码校验电话号码^1[3-9]\d{9}$6.3 邮箱[\w.-][\w-](\.[\w-])6.4 提取日期(\d{4})-(\d{2})-(\d{2})(\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])(\d{4})-(0?[1-9]|1[0-2])-(0?[1-9]|[12]\d|3[01])(\d{4})-(0?[1-9]|1[0-2])-([12]\d|3[01]|0?[1-9])6.4 QQ号\b[1-9]\d{4,10}\b为什么不用^$,这两个针对的是整个字符串或者争端文本适合校验是用6.5 身份证\b[1-9]\d{5}(19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[\dX]\b前 6 位地区码[1-9]\d{5}年份(19|20)\d{2}允许19xx、20xx 年月份(0[1-9]|1[0-2])日期(0[1-9]|[12]\d|3[01])后面 3 位顺序码\d{3}最后 1 位校验码[\dX]复习一下正则表达式。