我正在开发一个Java项目,我正在尝试使用useDelimiter删除除“=”和“,”之间的文本之外的所有内容。例如,在文件的第一行,我想保留“ThermostatNight”。
这就是文本文件的样子:
Event=ThermostatNight,time=0
Event=LightOn,time=2000
我已经能够使用此代码完全相反:
s.useDelimiter("=(.*?),");
有什么方法可以调整它来做相反的事情吗?
答案 0 :(得分:0)
试试这个:
s.replaceAll("([a-zA-Z]*=)([a-zA-Z]*)(,.*)","$2")
这是遵循您显示的模式。如果它改变了,你将不得不改变这个正则表达式。
请在此处查看:http://regex101.com/r/jN8iR8
请参阅匹配组一节,您将看到第2组是您想要的结果。
替换所有方法正在替换第2组的所有内容,即=
和,
之间的内容
修改强>
由于OP说s是Scanner
Scanner s = new Scanner(new File("YOURFILE"));
while (s.hasNext()) {
String text = s.next();
System.out.println( text.replaceAll("([a-zA-Z]*=)([a-zA-Z]*)(,.*)","$2") );
}
s.close();