gpt4 book ai didi

android - 程序在尝试启动正则表达式模式时停止

转载 作者:行者123 更新时间:2023-11-29 01:27:44 24 4
gpt4 key购买 nike

我正在尝试从我拥有的字符串中解析出所有通行费信息。我在 eclipse 中对此进行了测试,它工作正常,但是当我在 android IDE 中实现它并运行代码时,调试器只是在我在下面指出的模式声明处停止。所以程序没有崩溃,没有堆栈跟踪或抛出异常。其他模式没有问题,但收费模式只是做了一些非常奇怪的事情。

g="routes:[{routeName:Dulles Toll Rd W; SR-28 S,routeDurationInMinutes:18,routeLengthKM:21.474,routeLengthMiles:13.343320854,toll:true},{routeName:Frying Pan Rd; SR-28 S,routeDurationInMinutes:18,routeLengthKM:19.437,routeLengthMiles:12.077588127,toll:false}],startPoint:12801 Worldgate Drive, Herndon, VA 20170,endPoint:14069 Lotus Ln, Centreville, VA,startLatitude:38.95459763380265,startLongitude:-77.38901112241822,endLatitude:38.954550193428965,endLongitude:-77.38874605682294";
ArrayList parse = new ArrayList();
ArrayList route = new ArrayList();
ArrayList time = new ArrayList();
ArrayList toll= new ArrayList();
final Pattern p = Pattern.compile("routeName?.+?routeLengthKM");
Matcher m = p.matcher(g);
Pattern p2 = Pattern.compile("routeName?.+?routeDurationInMinutes");
Pattern p3 = Pattern.compile("routeDurationInMinutes?.+?routeLengthKM");
Pattern ptoll = Pattern.compile("toll?.+?}"); //<-- dies here
Matcher m3 = p3.matcher(g);
Matcher mtoll = ptoll.matcher(g);

while (m.find()) {
parse.add(m.group());
}

while (m3.find()) {
time.add(m3.group());
}

while (mtoll.find()) {
toll.add(mtoll.group());
}

最佳答案

您需要修复您的正则表达式。我不确定为什么,但出于某种原因,它不喜欢 "toll?.+?}"。您需要将该行更改为:

Pattern ptoll = Pattern.compile("toll?.+?\\}");

更改为 \\ ,它将转义 并让 Pattern 知道它是文字 } .

关于android - 程序在尝试启动正则表达式模式时停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32974978/

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