2011-02-01 2 views
-5

Что такое java regex, чтобы соответствовать шаблону ниже?Нужно java regex, чтобы соответствовать строке ниже

<anyString>.<5 or 10>.anyNumber.anyNumber 

Здесь 5 и 10 являются числами.

+4

Это тривиальная проблема для решения регулярных выражений. Я думаю, вам будет лучше, если вы попытаетесь решить проблему, а не подождите час или два, чтобы кто-то другой разрешил ее вам. Регулярные выражения не являются сложными (особенно подобными). Если вы можете писать код на любом языке, вы можете изучать регулярные выражения всего за пару часов обучения и практики. –

+0

Посмотрите на http://txt2re.com/. Это дает очень хорошую отправную точку: http://txt2re.com/index.php3?s=string.5.123.456&3&5&6 – marcog

ответ

6
.*\.(?:5|10)\.\d+\.\d+ 

должно работать.

Объяснение:

.*  # any number of characters (except newlines) 
\.  # literal dot 
(?:5|10) # 5 or 10 
\.  # literal dot 
\d+  # one or more digits 
\.  # literal dot 
\d+  # one or more digits 

Помните, что если вы используете его в Java, вам нужно, чтобы избежать обратной косой черты при построении регулярных выражений:

Pattern regex = Pattern.compile(".*\\.(?:5|10)\\.\\d+\\.\\d+"); 
+0

Не будет ли это соответствовать, если есть только «1» или «0» в том, что 5 или 10 раздел? –

+0

@Sachin: No. '(?: 5 | 10)' соответствует '5' или' 10', больше ничего. –

0

Если предположить, что я прочитал ваше намерение правильно это должно работать:

Pattern p = Pattern.compile(".*?\\.(?:5|10)\\.(\\d+)\\.(\\d+)"); 
    Matcher m; 

    m = p.matcher(".5.11.10"); 
    m.matches(); // == true 
    m.group(1).equals("11"); 
    m.group(2).equals("10"); 


    m = p.matcher("hannib al.10.11.12"); 
    m.matches(); // == true 
    m.group(1).equals("11"); 
    m.group(2).equals("12"); 
0

Предполагая, что вы имеете в виду пример допустимую строку .5.1.1

Эта форма должна сделать трюк

\.(5|10)\.[0-9]\.[0-9]

или если вторые два числа могут иметь более одного символа, то есть .10.123.1234

\.(5|10)\.[0-9]*\.[0-9]*

+1

'(5) | (10)' должно быть '(5 | 10)' или чередование не будет работать должным образом. –

+0

@Tim Pietzcker - Хорошее место, так как в настоящее время написано совпадение '.5' или' 10.123.123' - редактирование соответственно – Robb

Смежные вопросы