(观看网易云课堂---java300集大型视频做的笔记,都是里面的内容,整合了一下)
作用:
对文本进行复杂处理
通过一种规则匹配一组字符串
正则表达式语法:
一、普通字符
二、转义字符
eg:\t \n .......
三、标准字符集合
区分大小写,大写是相反的意思
注:“.”不能匹配换行符
四、自定义字符集合
[]:匹配括号内任意一个字符
注:正则表达式的特殊符号,被包含到中括号中,则失去特殊意义,除了^ - 之外
标准字符集和,除小数点之外,如果包含于中括号,自定义字符集合将包含该集合
五、量词--修饰匹配次数(前一个字符)
注:匹配模式中的贪婪模式:匹配字符越多越好,默认
匹配模式中的非贪婪模式:匹配字符越少越好,最后加上?
六、字符边界
匹配符合条件的位置,而不是字符
注:\b:前后字符不全是\w
七、匹配模式
IHNORECASE 忽略大小写模式:匹配时忽略大小写
SINGSINGLELINE 单行模式:整个文本看成一个字符串,只有一个开头和结尾,“.”可以匹配任意字符
MULTILINE 多行模式:每行一个字符串,\A和\Z可以匹配字符串开始和结束位置
八、选择符和分组
注 :反向引用(\nnn):每一对()会分配一个编号,()的捕获,根据左括号的顺序从1开始自动编号 通过反向引用,可以对分组已捕获的字符串进行引用
eg:反向引用:(ab)/1 可以匹配abab
非捕获组:(?:ab)匹配ab,但不会保存,并不能用反向引用
九、预搜索(零宽断言)
只进行子表达式的匹配,匹配内容不计入最终的匹配结果,是零宽度
这个位置应该符合某个条件。判断当前位置的前后字符,是否符合指定的条件,但不匹配前后字符,是对位置的匹配
正则表达式匹配的过程中,如果子表达式匹配到的是字符内容,而非位置,并被保存到最终的匹配结果中,那么就认为这个子表达式是占有字符的;如果子表达式匹配的仅仅是位置,或者匹配的内容并不保存到最终的匹配结果中,那么就认为这个子表达式是零宽度的。占有字符还是零宽度,是针对的匹配内容是否保存到最终匹配结果而言的。
eg:[a-z]+(?=ing)匹配所有以ing结尾的字符串,但是不包含结尾的ing