# 正则表达式 ‘‘‘ =======元字符======= 1 行定位符:^表示开始 如^tm只能匹配以tm开关的字符串 $表示结束 如tm$只能匹配以tm结尾的字符串 如果想匹配tm在任意位置的字符串,直接用tm即可 2 常用元字符: . 匹配除换行符以外的任意字符 .可以匹配“mr\nM\tR”中的m r M \t R \w 匹配字母、数字、下划线、汉字 \w可以匹配“m 中 7r\n”中的“m 中 7 r”,但不能匹配“\n” \W 匹配除字母、数字、下划线或汉字以外的字符 \W可以匹配“m 中 7r\n”中的“\n” \s 匹配单个空白符(包括Tab键和换行符) \s可以匹配“mr\tMR”中的“\t” \S 除单个空白符(包括Tab键和换行符)以外的所有字符 \S可以匹配“mr\tMR”中的m r M R \b 匹配单词的开始或结束,单词的分界符通常是空格,标点符号或者换行 在“I like mr or am”字符串中,\bm与mr中的m相匹配,但与am中的m不匹配 \d 匹配数字 \d可以与“m7ri”中的字符7匹配 =======元字符======= ‘‘‘ ‘‘‘ =======限定符======= ? 匹配前面的字符零次或一次 colou?r,该表达式可以匹配colour和color + 匹配前面的字符一次或多次 go+gle,该表达式可以匹配的范围从gogle到goo...gle * 匹配前面的字母零次或多次 go*gle,该表达式可以匹配的范围从ggle到goo...gle {n} 匹配前面的字符n次 go{2}gle,该表达式只匹配google {n,} 匹配前面的字符最少n次 go{2,}gle,该表达式可以匹配的范围从google到goo...gle {n,m} 匹配前面的字符最少n次,最多m次 employe(0,2),该表达式可以匹配employ、employe和employee三种情况 =======限定符======= ‘‘‘ ‘‘‘ =======字符类======= 表达式查找字母和数字是很简单的,因为已经有了对应这些集合的元字符(如\d和\w) 但如果要查找特定的几个字符(a/e/i/o/u)怎么办,只要在方括号中列出即可。 [aeiou]可以匹配任意一个元音字母 [.?!]可以匹配任意一个符号(. ? 或 !) [0-9]可以匹配一位数字,和\d一样 [z-z0-9A-Z]和\w一样(如果不考虑中文的话) [\u4e00-\u9fa5]匹配任意一个汉字 [\u4e00-\u9fa5]+匹配多个连续汉字 =======字符类======= ‘‘‘ ‘‘‘ =======排除字符======= ^表示行的开始,但是当它放到方括号中的时候表示的是排除 [^a-zA-Z]除了字母,其它全都匹配 =======排除字符======= ‘‘‘ ‘‘‘ =======选择字符======= 如果匹配身份证号,就有两种匹配方法,一种是18位,一种是15位。这就需要选择逻辑。 | 选择字符,可以理解为或者 (^\d{15}$)|(^\d{18}$)|(^\d{17})(\d|X|x)$:15位全数字 或 18位全数字 或 17位数字+1位数字或X或x =======选择字符======= ‘‘‘ ‘‘‘ =======转义字符======= \ 转义字符,将. ? \这样的特殊字符变为普通字符 匹配IP地址:127.0.0.1,如何写:[1-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3} 这样写有一个问题,因为.可以匹配任意一个字符,所以127101011也可以匹配出来 所以这里就需要转义字符 [1-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3} 这样的话三个数字间只能匹配字符. 而不会匹配其它非点的字符 =======转义字符======= ‘‘‘ ‘‘‘ =======分组======= 小括号的第一个作用就是改变限定符的作用范围,如:(six|four)th匹配sixth或fourth,如果没有小括号则匹配six或fourth 第二个作用就是分组,也称子表达式。如(\.[0-9]{1,3}){3},就是对分组(\.[0-9]{1,3})进行重复操作。 =======分组======= ‘‘‘
原文:https://www.cnblogs.com/zack6688/p/13521286.html