2013-08-21 4 views
1

Я пытаюсь соответствовать значению perecent в строке:Согласование первого регулярного выражения с плавающей запятой?

Starting task, 13.73 % (11.17 fps, avg 14.66 fps, ETA 00h03m53s) 

Проблема заключается в моем регулярных выражениях работает, но она соответствует всем три значения с плавающей точкой:

\d*\.\d+%? 

я получаю три значения обратно:

11,17 14,66

  • 13,73
  • 11,17
  • 14,66

Я только хочу, чтобы соответствовать 13.73.

Любые советы?

ответ

3

Проблема с вашим шаблоном заключается в том, что он будет соответствовать числу, за которым следует сразу дополнительный знак процента. Поскольку проценты не являются обязательной частью шаблона, другие числа соответствуют ему просто отлично.

Вы можете попробовать этот шаблон (обратите внимание, что \s* означает ноль или более пробельных символов):

\d*.\d+\s*% 

Это вернет 13.73 %. Если вы не хотите включать % знак, используйте группу:

(\d*.\d+)\s*% 

А затем извлечь соответствующий текст.

В качестве альтернативы можно использовать предпросмотр:

\d*.\d+(?=\s*%) 
Смежные вопросы