首页 > 解决方案 > 正则表达式获取一行上的数字

问题描述

我必须在 Perl 中添加一些简单的行,但我并没有完全了解正则表达式以及我必须如何使用它。我运行一个文件并从那里获取输入:

open myFile, "csh ........

我通过执行“ print”来遍历文件输出的行,我看到其中一行是:

TaskID:             1000

(那里有很多空间)。我想要做的只是识别行开头的情况TaskID:,然后将数字放入变量中。

为了识别以 开头的行TaskID,我做了:

if (/TaskID:/) {

我的问题:

  1. if 条件有效,它确实会找到以 . 开头的行TaskID。但这是正确的方法,还是有更好的方法?
  2. 我不知道如何将这一行中的数字放入变量中。

我试过类似的东西:

my $mytask = $1;

但是,它不明白。您能帮我了解如何获取号码吗?

标签: regexperl

解决方案


$1包含与第一个捕获 ( (...)) 匹配的文本。您的模式没有捕获,因此不设置$1. 固定的:

if (/^TaskID:\s*(\d+)/) {
   my $task_id = $1;
   ...
}

但我喜欢避免使用$1.

if ( my ($task_id) = /^TaskID:\s*(\d+)/ ) {
   ...
}

推荐阅读