Java TCPdump使用正则表达式解析序列号

Java TCPdump使用正则表达式解析序列号,java,regex,networking,tcpdump,Java,Regex,Networking,Tcpdump,我正在创建一个程序,从TCPdump读取数据包,并读取序列号。我正在使用正则表达式,但我的代码不起作用 public long getsequencenumber(String Packet){ Pattern P = Pattern.compile("seq.\\d*"); Matcher m = P.matcher(Packet); if(m.matches()){ Pattern num = Pattern.compile("\\d*");

我正在创建一个程序,从TCPdump读取数据包,并读取序列号。我正在使用正则表达式,但我的代码不起作用

public long getsequencenumber(String Packet){
    Pattern P = Pattern.compile("seq.\\d*"); 
    Matcher m = P.matcher(Packet);
    if(m.matches()){
        Pattern num = Pattern.compile("\\d*");
        return Long.getLong(num.matcher(m.group()).group());
    }
    return -1;
}
以下印刷品-1:

System.out.print(getsequencenumber("BlahBdds seq 1910428391283 ldskgj"));
有什么建议吗?谢谢

使用
Matcher#matches
时,匹配完整的
字符串
,否则
if
语句表达式将计算为false,并且不会提取每次返回
-1
的数字。此外,第二个
模式
可以通过使用从输入的
字符串
中提取数字来完全消除

public long getSequenceNumber(String packet){
    Matcher m = Pattern.compile(".*seq.(\\d+).*").matcher(packet);
    if (m.matches()) {
        return Long.parseLong(m.group(1));
    }

    return -1;
}
您需要的是和:

输出:

1910428391283

1910428391283