某个语句规则的字符串
中括号[ ]:只有方括号里面 指定的字符 才参与匹配,也只能匹配单个字符任意一次。也可以使用[ - ]的形式代表区间
[c蔡i]xk 只可以匹配:cxk,蔡xk,ixk 。不可以匹配:菜xk,Cxk 等。- 9] 代表匹配0到9的所有数字。 [a - z]代表匹配小写a到z的所有字母。[0 - 9a - zA - Z]代表匹配所有的数字,小写字母,大写字母。-,如何匹配?表达式:[0 - 9 \ - ],就OK啦^ 来标记,表达式:[ ^ 0 - 9 ]爱后面不包含 你的数据? 表达式:爱 [ ^ 你 ]public boolean matches(String regex)告诉这个字符串是否匹配给定的正则表达式英文句点 . 符号: 匹配 单个任意字符 ,它只能出现在方括号外
. ar可选字符(匹配次数的符号)
| 符号 | 字符出现次数 | 例子 |
|---|---|---|
? | 0次或者1次 | 表达式:比如honu?r,指u可以出现也可以不出现,honr或honur |
{n} | 恰好n次 | 比如匹配下列电话号码如186482656,如何匹配?表达式:\d{9} --------- 比如匹配下列电话号码如010-676448的形式,如何匹配?表达式:\d{3}-\d {6} |
{n,m} | 从n次或者m次 | 比如表达式:\d{8,9},指可以匹配12435453或者124354535 -------当只想遇到8个数字时候,不在匹配9个数字的时候怎么办呢?表达式\d{8,9}\?,注意这里的? 表示的是非贪婪模式,尽可能很少的匹配字符-------综合题:以3或者4数字开头,后面7个数字,例如:020-7281333,如何表示?表达式:\d{3,4} - \d{7} |
{n,} | n 次或者n次以上 | 表达式:\d{0,} 表示0个或者无数个;表达式:\d {1,} 表示1个或者无数个 |
* | 0次或者多次 | 相当于{0,} |
+ | 1次或者多次 | 相当于{1,},例如匹配以f开头的数据,如food,faker,f04523…a123,表达式:f.+ |
匹配所有的手机号码,1. 必须是11位的数字,2. 第一位数字必须以1开头,第二位数字可以使[3,4,5,6,7,8],后面9个数是[0 - 9]中的任意一个数字,表达式:^1[345678] \d {9}
匹配网站地址,1. http s : //code.com/ 或者http: //code.com/的形式,2. 不能有http和http:jn/code形式,表达式:http . */$
\d :匹配任意数字,相当于[0 - 9],相反\D:匹配的是非数字[ ^ 0 - 9]
\w :匹配字母,数字,下划线,相当于表达式[0 - 9 a - z _ A - Z],相反\W:匹配的是非字母,数字,下划线[ ^ 0 - 9 a - z _ A - Z]
\s :匹配空白符,比如空格,tab,换行等,例如"鸡你太美 ",匹配后边空格或者tab怎么弄? 表达式:“鸡你太美\s”,相反\S:匹配的是非空格,tab,相当于全部
\b:匹配有边界单词,例如字符串"absmasterjhjs-master-dsgsdg"master",则表达式:\bmaster\b,匹配出的是后面两个master,,,例如匹配1,2,3a456的匹配边界数字的话,表达式:\b \ d \b,只能是1,2,3a456
^ :指的是一个字符串的开始,例如^Java,匹配的是Java-sfasafgJava
$ :指的是一个字符的结束,例如Java$,匹配的是java-dsgfjavagsd-java
注意:当都加上
^Java$,匹配的是Java。这里 前后 没有任何东西就光是Java
在正则表达式,除了获取整个匹配,还能够在匹配中选择每一个分组,使用 () 即可。
( \d { 3 } ) - ( \d { 6 } )( . * ? ) < /div >( \d{ 4 } ) [ -/\ \s ] ? ( \d{ 1,2 } ) [ -/\ \s ] ? ( \d{ 1,2 } )或者条件 ( | )
( .mp4 | .avi | .wmv | .jpg )非捕获分组 ( ?:表达式 )
需要匹配:01-75855,0731-75855,12345-75855,tel:75855,需要提取的是75855,如何提取?表达式 :( ? : \d { 2 } | \d { 3 } | \d { 4 } | \d { 5 } | tel ) [ \ - : ] ( \d { 5 } )
分组的回溯引用 (\n)使()分组重复一次,排列顺序从1开始
( \w+ )> .*? \ 1> 注意:.*?是指任意所有字符类型,\1指的就是(\w+)(\w) (\w) \2 \1正向先行断言 (?=表达式)指在某个位置向右看,表示所在位置右侧必须能匹配表达式
喜欢(?=你) ,我喜欢你和喜欢你符合条件(?= .*?[a-z]) (?= .*?)[A-Z] .+(?= .*?[a-z]) (?= .*?[A-Z]) (?= .*?[0-9]) .{8}反向先行断言 (?!表达式) 指保证从左往右不能出现某字符
喜欢(?!你),我喜欢,我喜欢我,喜欢符合条件(?!qq)正向后行断言 (?<=表达式) 指从某个位置向左看,所在位置左侧必须能匹配表达式
(?<=我)喜欢(?=你)(?<=王) \S+ 注意:\S+的意思是除了空白,tab,换行以外的字符反向后行断言 (? 指从某个位置向左看,所在位置左侧不能匹配表达式
没有我,后边没有你,怎么实现呢? 表达式:(?喜欢(?!你)\哦,表达式:(? \ $ [^ \$]+\ $ (?!\$)https://lemon-.blog.csdn.net/article/details/91417485?spm=1001.2014.3001.5506