2015-02-18 3 views
0

У меня есть несколько строк, которые имеют либо одну из следующих формExtract числовую часть из строки

  1. пустая строка
  2. Строка, содержащая номер (который может иметь - знак перед ним и может иметь десятичную точку в нем), за которым следует пробел, а затем некоторые другие символы. Например -234.44 ABC

    1. В случае 1. Я хочу, чтобы извлечь пустую строку
    2. В случае 2 Я хочу, чтобы извлечь 0
    3. В случае 3 Я хочу извлечь числовую часть. В данном примере это будет -234.44

Что регулярное выражение будет для этого?

Кстати, мы никогда не будем иметь строки, как

0000 ABC 
00.3 ABC 
+1.7 ABC 
.9 ABC 
- 
+2

Можете ли вы показать ваши попытки решить эту проблему? Это поможет нам дать соответствующие объяснения. Кроме того, укажите, какой язык реализации/язык хоста или среда, которую вы используете. –

+0

Эти цифры всегда начинаются? – anubhava

+0

@anubhava Только в случаях 2 и 3. –

ответ

1

Вы можете использовать это регулярное выражение:

^([+-]?\d+(?:\.\d+)?\b|$) 

RegEx Demo

+1

@vks Я не хочу соответствовать .9 ABC –

+0

@vks: Надеюсь, что это не длинный сеанс комментариев, но [вы можете увидеть ИНФОРМАЦИЮ о СОХРАНЕНИИ вашего регулярного выражения здесь] (https://regex101.com/r/ uC8uO6/2) и обратите внимание на то, что является основным отличием. – anubhava

3
([+-]?\d*(?:\.\d+)?) 

Это простое регулярное выражение должно сделать это для you.See демо.

https://regex101.com/r/jG2wO4/9

Вы также можете использовать ^([+-]?\d*(?:\.\d+)?), если вы не имеете что-нибудь еще в начале строки.

Использование

^(?=.*\d)(?:[+-](?=\d|\.\d))?\d*(?:\.\d+)?|^$ 

Если у вас есть +- в вашем inputs.See демо.

https://regex101.com/r/jG2wO4/11

+1

Это неверно. Он также будет соответствовать только '+' или '-'. –

+0

Уточненный в моем OP. –

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