2012-06-27 2 views
-1

Строка будет иметь формат [(1.0N)-195(1.0E)-195(28)-769.7(NESW)-1080.8(U)-617.9(43-047-30127)]нужно соответствовать строке со следующими REGEX Отформатируйте

мне нужно регулярное выражение, чтобы соответствовать, чтобы увидеть, если строка содержит -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]) Ничего не работало

+0

Не значит матч 43-037-30149 но захват -037-30149 ? –

+0

Извините за непонятное ... Я просто хочу проверить, содержит ли строка - [0-9] [0-9] [0-9] - [0-9] [0-9] [0-9] – jaysun

+0

Таким образом, вы не ищете строку «-037-301», как указано в вашем вопросе? [смущенный]. –

ответ

2

Подстрока будет намного проще, но (?:\\d{2})(-\\d{3}-\\d{5}) будет соответствовать -XXX-XXXXX как 1 группа.

Я предполагаю, что 3 цифры в последнем номере были ошибкой. Если не просто изменить 5 к 3.

+0

Спасибо большое charles – jaysun

0

почему вы не используете подстроку ??

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

или это один:

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

решений "только" подстроки также будет гораздо более эффективным! ;)

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"); 
    } 
Смежные вопросы