0

我正在开发一个通过扫描报告解析的应用程序,所以我使用正则表达式来过滤它们。我的正则表达式是\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\s{1,10}\\d{1,4}\\sms.* (带有转义斜杠),我过滤的文本看起来像

172.20.4.3      0 ms            k2g-dhcp.somedomain.jp    [n/s]           00:1C:C4:5B:12:F2                [n/a]                               
172.20.4.4      [n/a]           [n/s]                   [n/s]           [n/s]       

我已经测试了给定的正则表达式并且它正常匹配,但在 Java 中它只是不匹配。这是我的代码:

Pattern pat = Pattern.compile("\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\s{1,10}\\d{1,4}\\sms.*", Pattern.CASE_INSENSITIVE);
Matcher mat = pat.matcher(data);
while(mat.find())
{
    System.out.println("Found matches!"); // Code never gets here
}
System.out.println("Done!");
4

1 回答 1

0
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class PatternSample {

    public static void main(String[] args) {
        String data = "172.20.4.3     0 ms            k2g-dhcp.somedomain.jp     [n/s]               00:1C:C4:5B:12:F2               [n/a]   ";
        Pattern pat = Pattern.compile("\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\s{1,10}\\d{1,4}\\sms.*", Pattern.CASE_INSENSITIVE);
        Matcher mat = pat.matcher(data);
        while(mat.find())
        {
            System.out.println("Found matches!"); // Code never gets here
        }
        System.out.println("Done!");

    }

}
于 2013-10-21T14:12:46.997 回答