特殊的非捕获分组
package com.ftn.regexp;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
//演示特殊的非捕获分组
public class Regexp_08 {
public static void main(String[] args) {
//非捕获
String content = "fsjj2countryside5641countries23589country12..fns()$hjdks nbfsj dj,";
//(?:pattern):选择匹配符,相当于 country|countries,
String regStr = "countr(?:y|ies)";
//(?=pattern):选择匹配符,相当于匹配 字符串 countryside|countries 中的 countr
String regStr2 = "countr(?=yside|ies)";
//(?!pattern):取反选择匹配符,相当于匹配不在字符串 countryside|countries 中的 countr
String regStr3 = "countr(?!yside|ies)";
String regStr4 = "[\\w)]+";
Pattern pattern = Pattern.compile(regStr4);
Matcher matcher = pattern.matcher(content);
while (matcher.find()){
System.out.println(matcher.group(0));
}
}
}
非贪婪匹配
默认为贪婪匹配
package com.ftn.regexp;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
//演示非贪婪匹配
public class Regexp_09 {
public static void main(String[] args) {
String content = "fsjj2countryside5641111jjjjllll2..fns()$hjdks nbfsj dj,";
String regStr = "1+"; //默认贪婪匹配
String regStr2 = "1+?"; //+?:更改为非贪婪匹配
Pattern pattern = Pattern.compile(regStr2);
Matcher matcher = pattern.matcher(content);
while (matcher.find()){
System.out.println(matcher.group(0));
}
}
}