需要匹配以下正则表达式格式的字符串

时间:2012-06-27 19:57:05

标签: java regex

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

我需要匹配正则表达式以查看字符串是否包含-XXX-XXX(其中X是数字)

    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]) 什么都没有用

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分: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");
  } 

答案 2 :(得分:0)

为什么不使用substring ??

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

或者这个:

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

使“仅”子串也会更有效率! ;)

相关问题