Я пытаюсь извлечь только значение числа БЕСПЛАТНОЙ КАРТЫ, которое составляет 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

1 ответ1

0

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .