java - 如何用正则表达式有效过滤掉一些子字符串?

标签 java regex

我想从输入字符串中过滤掉 srcport 和 dstport。这是我尝试过的代码:

String input = "2014<>10.100.2.3<><189>date=2014-01-16,time=11:26:14,devname=B3909601569,devid=B3909601569,logid=000013,type=traffic,srcip=192.168.192.123,srcport=2072,srcintf=port2,dstip=10.180.1.105,dstport=3206,dstintf=port1,sessionid=121543,status=close,policyid=196,service=MYSQL,proto=6,duration=10,sentbyte=3910,rcvdbyte=175085,sentpkt=74,rcvdpkt=132";

Pattern p = Pattern.compile("(srcport=)(\\d+).[\\s]?(dstport=)(\\d+)");
Matcher m = p.matcher(input);

StringBuffer result=new StringBuffer();

while (m.find()) {

System.out.println("Srcport: " + m.group(2) + " & ");
System.out.println("Dstport: " + m.group(4));

}

System.out.println(result);

但它没有显示任何输出。正则表达式是否有错误

Pattern p = Pattern.compile("(srcport=)(\\d+).[\\s]?(dstport=)(\\d+)");

或 println 行

System.out.println("Srcport: " + m.group(2) + " & ");
System.out.println("Dstport: " + m.group(4));"

任何建议都将受到高度赞赏。

最佳答案

查看对正则表达式和捕获组的以下更改:

    String input = "2014<>10.100.2.3<><189>date=2014-01-16,time=11:26:14,devname=B3909601569,devid=B3909601569,logid=000013,type=traffic,srcip=192.168.192.123,srcport=2072,srcintf=port2,dstip=10.180.1.105,dstport=3206,dstintf=port1,sessionid=121543,status=close,policyid=196,service=MYSQL,proto=6,duration=10,sentbyte=3910,rcvdbyte=175085,sentpkt=74,rcvdpkt=132";
    Pattern p = Pattern.compile("srcport=(\\d+).*?dstport=(\\d+)"); // update regex
    Matcher m = p.matcher(input);

    StringBuffer result=new StringBuffer();

    while (m.find()) {

        System.out.println("Srcport: " + m.group(1)); //print groups 1 + 2
        System.out.println("Dstport: " + m.group(2));

    }

    System.out.println(result);

关于java - 如何用正则表达式有效过滤掉一些子字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22216661/

相关文章:

java.net.协议(protocol)异常 : Too many redirects in Android

java - CellStyle共享同一个堆地址apache poi

java - 分段上传不适用于 android + rails

java - 间接 Apache HttpClient 和 javax.net.ssl.SSLException : hostname in certificate didn't match

php - 正则表达式:显示所有电话号码

java - 通过删除 if 和 else 条件进行重构

c# - 如何将正则表达式组捕获集合与另一个组捕获集合匹配?

javascript - 测试文本区域中的无效文本格式

javascript - 正则表达式没有按预期工作?

javascript - 我的正则表达式如何支持中文、日语、法语等多种语言