Java的正则表达式(三)1.非捕获分组(1).(?:pattern) -- 匹配pattern但不捕获该匹配的子表达式,即它是一个非捕获匹配,不存储供以后使用的匹配.(2).(?=pattern) -- 非捕获匹配例如'Windows(?=95[98|NT|2000)'匹配'Windows 2000'中的'Windows',但不匹配'Windows 3.1'中的'Windows'(3).(?!pattern) -- 该表达式匹配不处于匹配pattern的字符串的起始点的搜索字符串,是一个非捕获匹配例如,'Windows(?!95|98|NT|2000)'匹配'Windows 3.1'中的'Windows',但不匹配'Windows 2000'中的'Windows'2.非贪婪匹配? -- 当此字符紧随任何其他限定符(*、+、?、{n}、{n,}、{n,m})之后时,匹配模式是"非贪心的""非贪心的"模式匹配搜索到的、尽可能短的字符串,而默认的"贪心的"模式匹配搜索到的、尽可能长的字符串例如在字符串"oooo"中,"o+?"只匹配单个"o",而"o+"匹配所有"o"3.分组、捕获、反向引用(1).分组可以用圆括号组成一个比较复杂的匹配模式,则一个圆括号的部分我们可以看作是一个子表达式/一个分组(2).捕获将正则表达式中子表达式/分组匹配的内容:保存到内存中以数字编号或显式命名的组里,方便后面引用,从左向右,以分组的左括号为标志,第一个出现分组的组号为1,第二个为2,以此类推.组0代表的是整个正则式(3).反向引用圆括号的内容被捕获后,可以在这个括号后被使用,从而写出一个比较实用的匹配模式,这个我们称为反向引用这种引用既可以是在正则表达式内部,也可以是在正则表达式外部,内部反向引用 \\分组号,外部反向引用 $分组号4.Matcher类的常用方法(1)public int start() -- 返回以前匹配的初始索引(2)public int end() -- 返回最后匹配字符之后的偏移量(3)public boolean matches()-- 尝试将整个区域与模式匹配(4)public String replaceAll(String replacement)--替换模式与给定替换字符串相匹配的输入序列的每个子序列