我需要为此创建一个正则表达式
示例
数学(5)、英语(6)、体育(5)
发布于 2019-09-14 09:20:10
我猜也许,
(?<=,|^)([^(,]*)\((\d*)\)(?=,|$)可能与你的想法很接近。
测试
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class re{
public static void main(String[] args){
final String regex = "(?<=,|^)([^(,]*)\\((\\d*)\\)(?=,|$)";
final String string = "math(5),English(6),P.E(5)";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);
while (matcher.find()) {
System.out.println("Full match: " + matcher.group(0));
for (int i = 1; i <= matcher.groupCount(); i++) {
System.out.println("Group " + i + ": " + matcher.group(i));
}
}
}
}输出
Full match: math(5)
Group 1: math
Group 2: 5
Full match: English(6)
Group 1: English
Group 2: 6
Full match: P.E(5)
Group 1: P.E
Group 2: 5如果您希望简化/修改/探索该表达式,可以在regex101.com的右上角面板中对其进行解释。如果您愿意,您还可以在this link中观看它如何与一些样本输入进行匹配。
https://stackoverflow.com/questions/57931742
复制相似问题