Регулярное выражение для определения числа в строке - PullRequest
1 голос
/ 11 февраля 2011

Я сталкиваюсь со строкой:

[something] -number OR number [something]

Я хочу иметь возможность разыграть номер. Я не знаю, в каком положении это происходит. Я не могу построить подстроку, потому что нет очевидного разделителя.

Есть ли способ, как я мог бы извлечь число из строки, сопоставляя шаблон, как

[-]?[0..9]+

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

1 Ответ

4 голосов
/ 11 февраля 2011
-?\b\d+\b

Это разбито на:

-?(необязательный знак минуса)

\ b граница слова

\ d + 1 или более цифр

[EDIT 2] - кивок Алану Муру

Неудобно на Javaне имеет дословных строк, поэтому вам придется экранировать вышеприведенное регулярное выражение как:

String regex = "-?\\b\\d+\\b"

Я бы также порекомендовал сайт, подобный http://regexlib.com/RETester.aspx, или программу, подобную Expresso. чтобы помочь вам проверить и спроектировать ваши регулярные выражения

[EDIT] - после некоторых хороших комментариев

Если вы еще не сделали что-то вроде *?(-?\d+).* (из @Voo), потому что я не былВы не уверены, хотите ли вы соответствовать всей строке или только цифрам.Обе версии должны сообщать вам, есть ли цифры в строке, и если вы хотите фактические цифры, используйте первое регулярное выражение и ищите группу [0].Есть умные способы назвать группы или несколько снимков, но это будет сложный ответ на прямой вопрос ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...