什么是正则表达式
是由一些字符和特殊符号组成的字符串
能按照某种模式匹配一系列有相似特征的字符串
正则表达式中的符号
lierral 字面值
| 或
. 匹配任意字符(除\n之外)
^ 匹配字符串起始部分
$ 匹配字符串终止部分
* 匹配0次或者多次前面出现的正则表达式
+匹配1次或者多次前面出现的正则表达式
?匹配0次或者1次前面出现的正则表达式
{N}匹配前面N次出现的正则表达式
{M,N}匹配前面M-N次出现的正则表达式,最大化优先
{...} 匹配来自字符集的任意单一字符
{...x-y..} 匹配x-y范围中的任意字符
[^...] 不匹配此字符集合中传的任意一个字符,包括某一范围的字符
(*|+|?|{})? 用于匹配上面频繁出现/重复出现符号的非贪婪版本
(...) 匹配封闭的正则表达式,然后另存为子组
正则表达中的特色字符
\d 匹配任意十进制数字 与 \D相反
\w 匹配任意字母数字字符
\s 匹配任意空格字符
\b 匹配任何单词边界
\N 匹配已经保存的子组N
\c 逐字匹配任何特殊字符 c
\A(\Z)匹配字符串的起始(结束)
正则表达式中的扩展表示法
使用正则表达式
简单匹配 abc
多个匹配模式 abc|123
匹配任意字符(.)
a+bc a*bc 指符号前面的a出现的次数
[...]匹配字符集合中任意单一字符
匹配同类型
\d匹配的是数字字符,小数无法匹配
空格字符 \n\t\s\v\f
^ $ 必须是整个字符串的开头
匹配特殊字符
用\进行转义 \\ \. \^
指定匹配的选项 []指定集合
正则表达式分组
重复一个字符串时
使用()进行分组,使用(?<word>\w+)指定组名
从左向右,以分组的左括号为标志,第一个出现的分组的组号1,第二个为2,以此类推
使用\1,\2反向引用 \k{name}
贪婪模式与非贪念模式
贪婪匹配:在整个表达式匹配成功的前提下,尽可能多的匹配 默认
非贪婪匹配:在整个表达式匹配成功的前提下,尽可能少的匹配
在需要匹配的中加上"?" 即为非贪婪模式
正则表达式应用
身份证号码匹配:(\d{6})(\d{4})((\d{2})(\d{2}))(\d{2})(\d{1})([0-9]|x)
电子邮箱:[a-zA-z0-9_-]+@[a-zA-Z0-9-]+(\.[a-zA-Z0-9]+)*(\.[a-zA-Z]{2,5})