我正在尝试提取文本文件中每一行中存在的端到端延迟值。我使用正则表达式只得到每行末尾的数字,但我得到的正则表达式错误是:
非法转义字符
此外,我需要打开文件,提取每一行的结束延迟值,并将其存储在另一个文本文件中(所有提取的结束延迟(。
这是我的代码:
import java.awt.Desktop;
import java.io.File;
import java.io.IOException;
import javax.swing.filechooser.FileSystemView;
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author DevAdmin
*/
public class extarctor {
public static final String s_example = "sender id: 116/sequence number: 117/depth: 443/sending time: 4/23/2020 2:08:54 AM/data: Hello I am SN: 116 this is event # 117 from my sideEnd-End Delay is:2.74550137092987E-05delay registered @ Sink: 621.932901880787";
public static void main(String[] args) throws IOException {
//text file, should be opening in default text editor
File file = new File(FileSystemView.getFileSystemView().getHomeDirectory().getAbsolutePath()+ "/res/End-End-Delay.txt");
//first check if Desktop is supported by Platform or not
if(!Desktop.isDesktopSupported()){
System.out.println("Desktop is not supported");
return;
}
Desktop desktop = Desktop.getDesktop();
if(file.exists()) System.out.println("Good, keep going!");
System.out.println(s_example.matches("d+.d+$"));
}
}
使用Matcher::group
提取所需数字。
演示:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
String s_example = "sender id: 116/sequence number: 117/depth: 443/sending time: 4/23/2020 2:08:54 AM/data: Hello I am SN: 116 this is event # 117 from my sideEnd-End Delay is:2.74550137092987E-05delay registered @ Sink: 621.932901880787";
Pattern pattern = Pattern.compile("\d+.\d+$");
Matcher matcher = pattern.matcher(s_example);
while (matcher.find()) {
System.out.println(matcher.group());
}
}
}
输出:
621.932901880787