2016-12-03 5 views
0

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

">number<" 

Теперь число может иметь десятичные знака или нет. я пошел с:

"[^\d]+" 

Это делает извлечения цифр, но из-за знаков после запятой, это иногда работает плохо. Есть идеи?

+0

Добро пожаловать в StackOverflow. Это какой-то случайный вопрос о любой помощи? http://stackoverflow.com/questions/308122/simple-regular-expression-for-a-decimal-with-a-precision-of-2 –

ответ

0
>((\-|\+)?[0-9]+(\.[0-9]+)?)< 

Разъяснение:

  • (\-|\+)? необязательного знак: - или +
  • [0-9]+ - непустая последовательность цифр
  • (\.[0-9]+)? - опциональная последовательность, начиная с точкой с последующей непустой последовательностью цифр
  • > и < в начале и в и (и не в соответствующей группе)

В первой группе соответствия у вас будет свой номер.

Example here.

+0

'1.' может быть допустимым форматом для float, в зависимости от языка, на котором записывается номер. –

0

Попробуйте это (копия с кавычками):

">[0-9]+(\.[0-9]+)?<" 
+1

Вам нужно избегать точки. – Maroun

0

Простое выражение, которое работает для целых чисел, поплавки и отрицательные числа:

>([\+\-]?\d+\.?\d*)< 

Номер находится в группе 1.

Если вы можете использовать положительные образы, это регулярное выражение совпадает только с числом от >< и больше ничего:

(?<=>)[\+\-]?\d+\.?\d*(?=<) 

Here в действии.

+1

Хорошо, что вы добавили '-' для отрицательных чисел, но это также соответствует, например,'> - 4-4-4 ---.-.-.. - ..-.-.- < '... – Adam

+0

Мусор в -> Мусороудаление: D. Но вы правы, я уточню ответ. –

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