gpt4 book ai didi

java - 解析选项字符串的正则表达式

转载 作者:行者123 更新时间:2023-12-02 00:55:58 26 4
gpt4 key购买 nike

我正在使用 Java 匹配器来尝试匹配以下内容:

@tag TYPE_WITH_POSSIBLE_SUBTYPE -PARNAME1=PARVALUE1 -PARNAME2=PARVALUE2: MESSAGE

TYPE_WITH_POSSIBLE_SUBTYPE 由带句点的字母组成。

每个参数都必须由字母组成,每个值都必须由数字/字母组成。可以有 0 个或多个参数。最后一个参数值之后紧接着是分号、空格,其余部分被视为消息。

一切都需要分组。

我当前的正则表达式(作为 Java 文字)是:

(@tag)[\\s]+?([\\w\\.]*?)[\\s]*?(-.*=.*)*?[\\s]*?[:](.*)

但是,我一直将所有参数作为一组进行获取。如果可能的话,如何将每个组作为一个单独的组?

我不太用正则表达式,所以我总是把事情搞砸。

最佳答案

如果要单独捕获每个参数,则必须为每个参数都有一个捕获组。当然,你不能这样做,因为你不知道会有多少个参数。我推荐一种不同的方法:

Pattern p = Pattern.compile("@tag\\s+([^:]++):\\s*(.*)");
Matcher m = p.matcher(s);
if (m.find())
{
String[] parts = m.group(1).split("\\s+");
for (String part : parts)
{
System.out.println(part);
}
}
System.out.printf("message: %s%n", m.group(2));

数组中的第一个元素是您的类型名称,其余(如果还有)是参数。

关于java - 解析选项字符串的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/514407/

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