正则表达式 非贪婪匹配
https://www.bilibili.com/video/BV1Eq4y1E79W/?p=15
正则表达式默认是“贪心的”,但灵活运用 ?,可以进行“非贪心”搜索:
?
当此字符紧随任何其他限定符(*、+、?、{n}、{n,}、{n,m})之后时,匹配模式是“非贪心的”。
“非贪心的”模式匹配搜索到的、尽可能短的字符串,而默认的“贪心的”模式匹配搜索得到的是尽可能长的字符串。
例如,在字符串“oooo”中 "o+?"只匹配单个 "o",而 "o+"匹配所有“o”。
示例:在"oooo"中匹配"o+?"
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegExp08 {
public static void main(String[] args) {
String content = "oooo";
String regStr = "o+?";
Pattern pattern = Pattern.compile(regStr);
Matcher matcher = pattern.matcher(content);
while (matcher.find()) {
System.out.println("找到:" + matcher.group(0));
}
}
}
找到:o
找到:o
找到:o
找到:o
思考:等价于匹配"o"吧
示例:在"oooo"中匹配"o+"
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegExp08 {
public static void main(String[] args) {
String content = "oooo";
String regStr = "o+";
Pattern pattern = Pattern.compile(regStr);
Matcher matcher = pattern.matcher(content);
while (matcher.find()) {
System.out.println("找到:" + matcher.group(0));
}
}
}
找到:oooo