I am creating a program to read a packet from TCPdump, and read the sequence number. I am using regular expressions, but my code isn't working.
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;
}
The following prints -1:
System.out.print(getsequencenumber("BlahBdds seq 1910428391283 ldskgj"));
Any suggestions? Thanks!
What you need is matcher.find()
and Long.valueOf()
:
public class Main {
public static void main(String[] args) {
System.out.println(getsequencenumber("Bladds seq 1910428391283 ldskgj"));
}
public static long getsequencenumber(String Packet){
Pattern P = Pattern.compile("seq.(\\d*)");
Matcher m = P.matcher(Packet);
if(m.find()){
return Long.valueOf(m.group(1));
}
return -1;
}
}
Output:
1910428391283
See demo here.