gpt4 book ai didi

java - 在java中,如何使用正则表达式模式来解析 "Event=Bell,time=9000,rings=5"以获​​取事件名称和两个数字字符串?

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

长期倾听者,第一次来电…

我正在使用 Scanner 对象来读取和解析文本文件,并且可以提取事件名称和时间值,但获取环值却让我无法实现。

文本文件:

Event=ThermostatNight,time=0
Event=LightOn,time=2000
Event=WaterOff,time=10000
Event=ThermostatDay,time=12000
Event=Bell,time=9000,rings=5
Event=WaterOn,time=6000
Event=LightOff,time=4000
Event=Terminate,time=20000
Event=FansOn,time=7000
Event=FansOff,time=8000

我首先用 substr 从每行中剪掉“Event=”。

之后,我得到具有以下模式的事件名称。这有效。

"[A-Za-z]+" 

我认为我应该能够使用下面的模式获取之后的两个数字,但它永远不会从包含该值的一行中获取环值。

"//d+"

我已经被从我的计算机上拖走了,所以我没有确切的代码,但我正在使用 java 中提供的标准模式/匹配器工具。

最佳答案

有多种方法可以做到这一点。一种方法是使用正则表达式来分割每一行的值:

^Event=(?<event>[^,]*),time=(?<time>[^,]*)(,rings=(?<rings>[^,]*))?$

这是一个例子:

Pattern pattern = Pattern.compile("^Event=(?<event>[^,]*),time=(?<time>[^,]*)(,rings=(?<rings>[^,]*))?$");
for (String line : lines) {
Matcher matcher = pattern.matcher(line);
if (matcher.find()) {
System.out.println("event: " + matcher.group("event"));
System.out.println("time: " + matcher.group("time"));
System.out.println("rings: " + matcher.group("rings"));
}
}

关于java - 在java中,如何使用正则表达式模式来解析 "Event=Bell,time=9000,rings=5"以获​​取事件名称和两个数字字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57649216/

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