暑假java学习笔记(三):正则表达式

(观看网易云课堂---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

猜你喜欢

转载自blog.csdn.net/fingers_xwk/article/details/81011062