gpt4 book ai didi

java - 正则表达式中的嵌套括号

转载 作者:行者123 更新时间:2023-12-01 17:59:07 24 4
gpt4 key购买 nike

我在 java 中使用正则表达式从用户条目中提取数据,如下所示:

String entry1 = "add to xx16,John Doe";
String entry2 = "add to ab20,John Doe;Richard Roe;John Stiles";

它们可以有多个名称,但如果确实有,则必须用分号分隔。现在我想要一个正则表达式来返回这些参数。我想出了这个

Pattern pattern = Pattern.compile("add to ([a-z|\\d]*),([a-zA-Z]*\\s[a-zA-Z]*)[;([a-zA-Z]*\\s[a-zA-Z]*)]*");
Matcher matcher = pattern.matcher(entry);
matcher.matches();
//get inputs with matcher.group();

它适用于像 entry1 这样的条目,但不适用于 entry2。有人看到我的错误吗?

最佳答案

您不能拥有像这样无限数量的组。只需将它们全部捕获然后分开即可。

由于您没有测试匹配器是否真正匹配,因此我假设您不太关心验证输入的格式,而只想获取值。所以你可以这样做:

Pattern pattern = Pattern.compile("add to (\\w+),(.*)");
Matcher matcher = pattern.matcher(entry);
matcher.matches(); // FIXME: check if it matches
String[] names = matcher.group(2).split(";");

关于java - 正则表达式中的嵌套括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42332903/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com