2011-02-10 7 views
1

Я столкнулся с строкой:Regex для определения числа в пределах строки

[something] -number OR number [something] 

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

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

[-]?[0..9]+

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

+1

Являются ли ваши номера целыми числами? или они могут содержать десятичную точку? –

+0

Jepp, целые числа. – wishi

ответ

4
-?\b\d+\b 

Это сломано вниз:

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

\ границе б слова

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

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

Unfortuantely Java не дословные строки, так вы должны будете бежать Regex выше как:

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

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

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

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

+0

defintely не для Pattern.compile, где \ d не существует. Я не уверен, что это даст мне отрицательные значения, такие как -1, хотя ... – wishi

+0

@wishi - Pattern.compile. «Понимаете» '\ d'; см. javadoc - http://download.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html –

+3

Я только что нашел [это] (http://www.regexplanet.com/simple /index.html) regex tester здесь вчера, и я должен сказать, что это, безусловно, мой любимый до сих пор. Кроме того, поскольку вам нужны целые числа где-то между строкой, вам нужно что-то вроде этого:. *? (-? \ D +). * – Voo

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