разделить несколько разделителей с помощью Perl

384
user3834663

Я пытаюсь извлечь только значение числа БЕСПЛАТНОЙ КАРТЫ, которое составляет 1400 из строки ниже. Здесь я использую функцию разделения дважды, чтобы получить значение. Может ли кто-нибудь помочь мне получить одно регулярное выражение, которое извлекло бы значение 1400, используя функцию разбиения здесь.

my @split_val = split(',',$line); print $split_val[2]; my @split_val1= split(':',$split_val[2]);  

Строка ввода:

2014-04-23 14:66:87,666 INFO - HEAP - [USAGE: 1948.3, FREE: 1400, MAX: 3597.5]; NON-HEAP - [USAGE: 611.9, FREE: 52.2, MAX: 1776.0]; CLASSES - [Loaded: 67007, Unloaded: 3237, Left: 63770]; THREADS - [Count: 342] 

выход:

1400 
0

1 ответ на вопрос

0
Toto

Почему вы хотите использовать сплит? матч здесь удобнее:

my $str = '2014-04-23 14:66:87,666 INFO - HEAP - [USAGE: 1948.3, FREE: 1400, MAX: 3597.5]; NON-HEAP - [USAGE: 611.9, FREE: 52.2, MAX: 1776.0]; CLASSES - [Loaded: 67007, Unloaded: 3237, Left: 63770]; THREADS - [Count: 342]'; my ($freeValue) = $str =~ /(?<=FREE: )(\d+(?:\.\d+)?)/; print $freeValue,"\n"; 

Выход:

1400 
но это регулярное выражение будет соответствовать как свободный счет для кучи и без кучи user3834663 6 лет назад 0
значит 1400 и 52.2 правильные? user3834663 6 лет назад 0
@ user3834663: Извините, я вас не получаю. Хотите получить только `1400` или все значения после` FREE: `? Toto 6 лет назад 0
Мне нужно получить только значение количества HEAP FREE, которое равно 1400, а не значение NON HEAP FREE, которое равно 52,2. user3834663 6 лет назад 0
Также мне нужно соответствовать, если свободный счет имеет десятичные значения, пример 1400.1 user3834663 6 лет назад 0
@ user3834663: см. мое редактирование. Toto 6 лет назад 0
извините, но это все еще соответствует 1400 и 52,2 user3834663 6 лет назад 0
@ user3834663: Нет, это не так. Как вы используете код выше? Пожалуйста, отредактируйте свой вопрос и добавьте больше контекста. Пример сценария, который я дал, выдает только `1400` Toto 6 лет назад 0

Похожие вопросы