Son*_*pta 5 java regex regex-group
我想为 NAME;NAME;NAME 和 NAME;NAME;NAME;NAME 设置一个正则表达式,其中 NAME 的第四次出现是可选的。
我有一个正则表达式 (.+);(.+);(.+) 匹配第一个模式但不匹配第二个。我试过玩?但它不适用于 (.+);(.+);(.+)(;(.+))?基本上,我想实现第四个 (.+) 为零或一次出现。
您可以使用惰性量词+?。例子:
private static final Pattern pattern = Pattern.compile("((\\w+);?)+?");
public void extractGroups(String input) {
var matcher = pattern.matcher(input);
while (matcher.find()) {
System.out.println(matcher.group(2));
}
}
Run Code Online (Sandbox Code Playgroud)
输入"FIRST;SECOND;THIRD;FOURTH"给出
FIRST
SECOND
THIRD
FOURTH
Run Code Online (Sandbox Code Playgroud)
输入"FIRST;SECOND;THIRD"给出
FIRST
SECOND
THIRD
Run Code Online (Sandbox Code Playgroud)
惰性量词用于匹配最短的可能String。如果您在while循环中重复调用它,您将获得所有匹配项。另外,您应该更好地使用\\w数学单词,因为.还包括;符号;
| 归档时间: |
|
| 查看次数: |
110 次 |
| 最近记录: |