gpt4 book ai didi

java - 如何从具有重复模式的字符串中获取信息?

转载 作者:太空宇宙 更新时间:2023-11-04 06:52:54 25 4
gpt4 key购买 nike

您好,我想从其中包含重复模式的字符串中获取信息。例如:

Matematika 1#1#0@Fizika 1#1#6@Osnovi na injenernoto proektirane 1#1#5@PIK 1#1#6@Matematika 2#2#6@Fizika 2#2#6@Osnovi na injenernoto proektirane 2#2#4@

我尝试过:

Pattern pattern1 = Pattern.compile("(.+)[@]+");
Pattern pattern2 = Pattern.compile("((.+)[#]+(\\d)[#]+(\\d)[@])+");
Matcher matcher1 = pattern1.matcher("Matematika 1#1#0@Fizika 1#1#6@Osnovi na injenernoto proektirane 1#1#5@PIK 1#1#6@Matematika 2#2#6@Fizika 2#2#6@Osnovi na injenernoto proektirane 2#2#4@");
Matcher matcher2 = pattern2.matcher("Matematika 1#1#0@Fizika 1#1#6@Osnovi na injenernoto proektirane 1#1#5@PIK 1#1#6@Matematika 2#2#6@Fizika 2#2#6@Osnovi na injenernoto proektirane 2#2#4@");


while(matcher1.find()){
System.out.println(matcher1.group(1));
while (matcher2.find()){
System.out.println(matcher2.group(1) + "\t");
System.out.println(matcher2.group(1) + "\t");
System.out.println(matcher2.group(1) + "\t");
}

}

但是没有成功。 “pattern2”工作正常,但前提是源字符串是:“Matematika 1#1#0@”....这导致了两个匹配器的想法。第一个用于将字符串分成小字符串,第二个用于获取信息。

我很高兴听到任何关于如何实现它的想法。

提前致谢。

最佳答案

您可以这样做,使用后视断言和前视断言来定位主题和数字组,然后使用匹配组提取每个匹配的各个部分:

Pattern p = Pattern.compile("(?=[^@])(.+?)#(\\d)#(\\d)(?=@)");
Matcher m = p.matcher("Matematika 1#1#0@Fizika 1#1#6@Osnovi na injenernoto proektirane 1#1#5@PIK 1#1#6@Matematika 2#2#6@Fizika 2#2#6@Osnovi na injenernoto proektirane 2#2#4@");
while(m.find())
{
if (m.groupCount() == 3) {
System.out.println(m.group(1));
System.out.println(m.group(2));
System.out.println(m.group(3));
}
}

关于java - 如何从具有重复模式的字符串中获取信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23119788/

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