2017-02-12 3 views
-4

Я новичок в Perl, и у меня есть ситуация, когда мне нужно извлечь число между двумя разными строками.Как извлечь число между двумя разными строками

У меня есть эта строка переменной:

my $var = "1234 23.3\" 

Как я могу извлечь число между white-space и dot? В этом примере выход должен быть равен 23.

Вышеуказанная строка var может меняться, поэтому иногда она может быть 123 4.32 или 123 334.4\, в которой выход должен быть 4 или 334 соответственно.

+0

'perl -E '$ var =" 1234 23.3 "; $ var = ~ /\s+(\d+)\./; скажем, $ 1'' –

+3

['perldoc perlretut'] (http://perldoc.perl.org/perlretut.html) – melpomene

+0

Вы что-нибудь пробовали? –

ответ

0

Пробелы могут быть сопоставлены с использованием \s последовательности обратной косой см perlrecharclass:

\s матчи любой одиночный символ считается пробельные

Кроме того, цифра может быть подобран с помощью \d:

\d соответствует одному символу, быть десятичной цифрой.

Чтобы соответствовать период или точка, нужно учитывать, что точка является регулярное выражение мета символ, который будет соответствовать любому символу (за исключением символа новой строки), см perlre и perlretut, поэтому в соответствии с точкой явно следует избежать.

Таким образом, учитывая $var = "1234 23.3" следующего заявления:

$var =~ /\s+(\d+)\./; 

должен извлечь номер после пробела и перед точкой в ​​группе захвата переменной $1. См. perlre для получения дополнительной информации о метасимволе +, а также информации о группах захвата.