正则表达式 总结
Posted yangl517
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式 总结相关的知识,希望对你有一定的参考价值。
正则表达式:
1. 元字符(*、?、+)和文字字符组成
2. #匹配的是一个位置
脱字符号(^) : 行开始
美元符号($) : 行结束
3. #匹配若干字符之一,字符间是‘或’关系,字符组内部和外部,元字符的定义和意义不同
#一个字符组只能匹配目标文本中的单个字符
字符组[]
连字符‘-’,在[]中间,表示范围
4. 排除型字符组(不希望匹配的字符)
[^]
5. . 匹配任意字符的字符组
6. 多选结构,匹配任意子表达式 |, 可以匹配任意长度的文本(区别于字符组)
gr[ea]y、 gr(e|a)y意义相同,
gr[e|a]y中,|表示普通字符,和前两者的意义不同
gre|ay表示gre或ay
7. java正则表达式:
(?i)abc 表示abc都忽略大小写
a(?i)bc 表示bc忽略大小写
a((?i)b)c 表示只有b忽略大小写
8. 单词分界符
#部分不支持\\<、\\>
\\< 单词的起始位置
\\> 单词的结束位置
\\b
9. ? 表示可选项 u?:表示u可以出现一次也可以不出现
10. + 表示之前紧邻的字符出现一次或多次
11. * 表示之前紧邻的字符出现任意多次或不出现
12. 空格也是普通字符, ( 、)表示元字符
13. 重现次数的范围:区间 min,max
14. 反向引用 表示匹配与表达式先前部分匹配的同样的文本
([a-z])([0-9])\\1\\2 : \\1表示[a-z]匹配的内容,\\2表示[0-9]匹配的内容
15. \\ + 元字符 表示对元字符进行转义
16. (?:....) 表示只分组不捕获,即非捕获型括号
17. \\s 表示匹配所有'空白'
\\S 除\\s之外的任何字符
\\r 回车符
\\w [a-zA-Z0-9]
\\W [^a-zA-Z0-9]
\\d
\\D
18. 正则表达式环视结构,不匹配任何字符,只匹配文本中的特定位置
肯定型顺序环视 (?=...)
(?=\\d) : 匹配当前位置的右边是数字
逆序环视(?<=...),从右向左查看文本
(?<=\\d),匹配当前位置的左边有一位数字
否定顺序环视(?!...) 子表达式不能匹配右侧文本
否定逆序环视(?
19. (?<=\\d)(?=(\\d\\d\\d)+$) : 只有一个捕获型括号即:(\\d\\d\\d)
20. (?<=\\d)(?=(\\d\\d\\d)+$)\\1 : \\1即指捕获型括号(\\d\\d\\d)
21. java中获取第一组括号匹配的文本
matcher.group(1);
22. 条件判断(?if then|else)
(?(?<=NUM:)\\d+|w+) : 表示当前位置的左边是NUM:时,则匹配后面跟一位数字,否则在其他位置尝试使用\\w
23. 匹配优先量词 + ? * min, max
匹配有上限和下限,但是尽可能的匹配多的内容
24. 忽略优先量词,即匹配尽可能少的内容,只需要满足下限,匹配就可以成功
*? +? ?? min, max?
25. 占有优先量词: *+ ++ ?+
26. 优先选择最左端的匹配结果
27. 标准量词是优先匹配的
28. java
(1).字符组内部\\b表示退格,其他地方均表示单词分界符 (\\b \\B)
(2). \\G当前匹配的起始位置
(3). (...) \\1 \\2 捕获型括号
(4). (?:...) 仅分组的括号
(5). Pattern p = Pattern.complie(regx);
(6). Matcher.usePattern(),修改对应的Pattern
(7). 重置Matcher匹配器 matcher.reset(); matcher.reset(text);
给当前的Matcher对象配上个新的目标,目标是就该方法的参数;如果不给参数,reset会把Matcher设到当前字符串的开始处。
(8). 修改目标字符串的检索范围(region)
(9). 当前Pattern的捕获型括号的数目,通过matcher.groupCount()获得
(10). matcher.find() 能否找到匹配
部分匹配,从当前位置开始匹配,找到一个匹配的子串,将移动下次匹配的位置
(11). matcher.matches() 表示matcher的正则表达式能否完全匹配目标字符串中当前检索范围的那段文本 整个匹配,只有整个字符序列完全匹配成功,才返回True,否则返回False。但如果前部分匹配成功,将移动下次匹配的位置。
(12). matcher.lookAt()
部分匹配,总是从第一个字符进行匹配,匹配成功了不再继续匹配,匹配失败了,也不继续匹配。
(13). matcher.replaceAll(replacement)
matcher能够匹配的文本,都会被替换为replacement
(14). matcher.replaceFrist(replacement)
只对第一次匹配,进行替换
(15). matcher.quoteReplacement(String text)
对text中存在的特殊字符,进行转义,范围转义后的字符串
(16). replacement,中含有'$1',则替换为对应编号的捕获型括号匹配的文本,'$0',替换所有匹配的文本
(17). appendReplacement(StringBUffer sbf, String replacement)
将原始目标字符串匹配之前的文本和replacement,存入sbf中
(18). appendTail(StringBuffer sbf)
找到所有匹配后,将目标字符串中剩下的文本,存入sbf中
以上是关于正则表达式 总结的主要内容,如果未能解决你的问题,请参考以下文章
正则表达式匹配
正则进阶之,回溯, (贪婪* 非贪婪+? 独占++)三种匹配量词
正则表达式总结
正则表达式之量词
正则表达式:元字符,量词
正则表达式 总结