您需要更改正则表达式以适合您要检索的所有匹配项,例如:
/((.*?),(.*?),'(.*?)','(.*?)','(.*?)'\)/g
工作示例@regex101
您需要将上面的正则表达式翻译/转义为Java兼容的,例如:
public static String REGEX_PATTERN = "\\((.*?),(.*?),'(.*?)','(.*?)','(.*?)'\\)";
然后,遍历所有匹配以尝试模仿 //g 修饰符,例如:
while (matcher.find()) {
}
Java 工作示例:
package SO40002225;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static String INPUT;
public static String REGEX_PATTERN;
static {
INPUT = "(8543,0,'Washington,_D.C.','',''),(8546,0,'Extermination_camp','',''),(8543,0,'Washington,_D.C.','',''),(8546,0,'Extermination_camp','','')";
REGEX_PATTERN = "\\((.*?),(.*?),'(.*?)','(.*?)','(.*?)'\\)";
}
public static void main(String[] args) {
String text = INPUT;
Pattern pattern = Pattern.compile(REGEX_PATTERN);
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
String mg1 = matcher.group(1);
String mg2 = matcher.group(2);
String mg3 = matcher.group(3);
String mg4 = matcher.group(4);
String mg5 = matcher.group(5);
System.out.println("Matching group #1: " + mg1);
System.out.println("Matching group #2: " + mg2);
System.out.println("Matching group #3: " + mg3);
System.out.println("Matching group #4: " + mg4);
System.out.println("Matching group #5: " + mg5);
}
}
}
更新 #1
删除了在正则表达式中为逗号, 所做的转义,正如 Pshemo 所指出的,, 不是元字符,或者它没有在限制重复中使用量词:{min, max}