Попытка написать регулярное выражение для буквенно-цифровой строки вроде - R51 / 53 - PullRequest
0 голосов
/ 16 марта 2011

Привет Я хочу регулярное выражение (Java) для строки в следующей форме: Начинается с R или S, затем пробел, затем число или число / число или число / число / число Примеры: R 51/53, R 41, R 43, S 36/37/39, S 2, S 24, S 26/2

заранее спасибо

Ответы [ 7 ]

2 голосов
/ 16 марта 2011

Попробуйте это

^[RS]\s\d+(?:/\d+){0,2}$

Объяснение:

^ начало строки

[RS] Соответствие класса символов 1 вхождению Rили S

\s пробел, также будет соответствовать табуляция или другой пробел, может быть заменен пробелом.

\d+ 1 или более чисел

(?:/\d+){0,2} Группа без захвата (лучшая производительность) из / /, за которой следуют 1 или более чисел, встречающиеся от 0 до 2 раз.

$ конец строки

1 голос
/ 16 марта 2011

Итак, основное регулярное выражение:

[RS] ([0-9]+)(/[0-9]+){0,2}

но мне нужна маскировка, наверное:

String regex = "[RS] ([0-9]+)(/[0-9]+){0,2}";
System.out.println (param + "\t" + param.matches (regex));

Я всегда в замешательстве, потому что sed, java, scala - все имеют разные мнения, что маскировать, а что нет. :)

(обновление: тест, измененная маскировка)

1 голос
/ 16 марта 2011
[RS] (\d+|\d+/\d+|\d+/\d+/\d+)
1 голос
/ 16 марта 2011

Вы имеете в виду, как

[RS] [0-9]+(/[0-9]+)*
0 голосов
/ 16 марта 2011

Вы можете попробовать это: (R | S) (\ d /?) +

0 голосов
/ 16 марта 2011

Я не уверен на 100%, но я думаю: R|S' '[0-9](/[0-9])*

0 голосов
/ 16 марта 2011

гул я думаю о:

'(R|S) ((\d+)/){0,2}\d+'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...