-1

字符串将是格式[( 1.0N)-195( 1.0E)-195(28)-769.7(NESW)-1080.8(U)-617.9(43-047-30127)]

我需要一个正则表达式来匹配以查看字符串是否包含-XXX-XXXX数字在哪里)

    Pattern p = Pattern.compile("(?=.*?(?:-[0-9][0-9][0-9]-[0-9][0-9][0-9]))");

    if(p.matcher(a).matches())

    {
        System.out.println("Matched");
    }

我也试过了-[0-9][0-9][0-9]-[0-9][0-9][0-9](?=.*?-[0-9][0-9][0-9]-[0-9][0-9][0-9]) 没有任何效果

4

3 回答 3

2

子字符串会容易得多,但(?:\\d{2})(-\\d{3}-\\d{5})会匹配 -XXX-XXXXX 作为 1 组。

我假设最后一个数字中的 3 位数字是错误的。如果不只是将 5 更改为 3。

于 2012-06-27T20:05:37.053 回答
1

如果要检查字符串是否包含 -3digits-3digits

 String a = "43-037-30149";
 Pattern p = Pattern.compile(".*(-[0-9]{3}-[0-9]{3})");
  if(p.matcher(a).matches())      
  {
     System.out.println("Matched");
  } 
于 2012-06-27T20:07:09.333 回答
0

你为什么不使用子字符串?

String b = a.substring(2,9); 

或者这个:

String c = a.substring(a.indexOf('-'), a.indexOf('-') + 8);

使“仅”成为子字符串也会更有效率!;)

于 2012-06-27T20:01:48.960 回答