2016-12-07 3 views
1

Я хочу написать код, который проверяет, соответствует ли вход пользователя конкретному формату. Формат - это 's', за которым следует пробел и число, если вход был «s 1 2 3 4», он вызывал бы какую-то функцию. «s 1 2» также будет приемлемым. До сих пор я обнаружил, что это регулярное выражение работает в течение определенного количества времени:Java специальное регулярное выражение

if (inputLine.matches("s \\d+ \\d+")) { } 

работает на 2-х числа после эля, но мне нужно, чтобы быть в состоянии принять любое количество цифр после с. Любая идея регулярного выражения, которая бы соответствовала моим потребностям? Спасибо

+2

Попробуйте это. "s (\\ d +) +" После открывающей скобки есть пробел – rafid059

ответ

4

Измените регулярное выражение

if (inputLine.matches("s(?: \\d+)+")) { } 

соответствовать s, пространство и 1+ последовательность пространства следует с 1+ цифр.

Если вы допустили 0 номеров после s, замените последний квант + на *, чтобы соответствовать нулю или больше вхождений.

Поскольку повторная захватывая группу перезаписать содержимое группы, это не имеет никакого смысла, используя захватывая группу здесь, таким образом, я предлагаю использовать , не захватывая один, (?:...).

+0

Человек, вы всегда так быстро справляетесь с этими вопросами регулярного выражения! – rafid059

+0

@RafiduzzamanSonnet: Я узнал это из [@AvinashRaj] (http://stackoverflow.com/users/3297613/avinash-raj). –

+0

Большая часть ответа, который я вижу от вас, имеет «(?:« Что-то вроде: «Я думал»? »Означает« ноль »или« один ». Можете ли вы указать мне на хороший ресурс? :) – rafid059

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