gpt4 book ai didi

java - 如何用正则表达式提取源IP地址和信息?

转载 作者:行者123 更新时间:2023-12-02 03:52:47 26 4
gpt4 key购买 nike

我想用正则表达式提取源IP地址和信息。

这是文本文件中的示例,

"No.","Time","Source","Destination","Protocol","Length","Info","SrcPort","Dest.port","Response time","Frequency","delta"
"","2007-11-13 18:10:53.940873","127.0.0.1","127.0.0.1","HTTP","162","GET /scripts/..%25%35%63../winnt/system32/cmd.exe?/c+dir HTTP/1.0 ","43974","80","0.000000","","0.000000"
I want to extract... ^ this ... and ... ^ this info

它可以包含数千行。我只想从每一行中提取源 IP 地址和信息。

预期输出是,

127.0.0.1 GET /scripts/..%25%35%63../winnt/system32/cmd.exe?/c+dir HTTP/1.0

最佳答案

如果您想纯粹使用正则表达式来执行此操作:

public static void main(String[] args)
{
String s = "No.\",\"Time\",\"Source\",\"Destination\",\"Protocol\",\"Length\",\"Info\",\"SrcPort\",\"Dest.port\",\"Response time\",\"Frequency\",\"delta\",\"2007-11-13 18:10:53.940873\",\"127.0.0.1\",\"127.0.0.1\",\"HTTP\",\"162\",\"GET /scripts/..%25%35%63../winnt/system32/cmd.exe?/c+dir HTTP/1.0 \",\"43974\",\"80\",\"0.000000\",\"\",\"0.000000";
Matcher m = Pattern.compile("(?m)(?<IP>\(\\d){3}\\.(\\d\\.){2}\\d\).*?(?<METHOD>GET|POST|PUT|DELETE)(?<URI>.*?(?<HTTPVERSION>HTTP\\/\\d(\\.\\d)?))").matcher(s);
m.find();
System.out.println("Result " + m.group("IP") + " " + m.group("METHOD") + " " + m.group("URI") + " " + m.group("HTTPVERSION"));
}

附注命名组从 Java 7 开始工作。我使用命名组只是为了方便,没有命名组也可以获得相同的结果。无论如何,我不会严重依赖正则表达式来完成此类任务。如果你想添加哪怕一条规则、条件等,正则表达式的增长速度非常快。正则表达式不是一根魔杖。请谨慎使用。

关于java - 如何用正则表达式提取源IP地址和信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35741039/

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