我无法使用useDelimiter()进行合作

时间:2013-12-09 22:37:55

标签: java

我正在开发一个Java项目,我正在尝试使用useDelimiter删除除“=”和“,”之间的文本之外的所有内容。例如,在文件的第一行,我想保留“ThermostatNight”。

这就是文本文件的样子:

   Event=ThermostatNight,time=0

   Event=LightOn,time=2000

我已经能够使用此代码完全相反:

s.useDelimiter("=(.*?),");

有什么方法可以调整它来做相反的事情吗?

1 个答案:

答案 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();