Perl 匹配关键字直到为空 space

Perl match keyword until empty space

我有一个包含字符串的变量。我想从 WARD= 之后获取字符串,直到第一个空 space (在本例中表示 yyy)。我对正则表达式和模式匹配的了解有限。

use strict;
use warnings;

my $var = "abc thisis long long stringggggg input=xxx WARD=yyy abcsdasdasd";
chomp($var);
my @ext = $var =~ /\b(WARD)\W+(\w+)/g;
print "@ext\n";

尝试模式:

(?<=WARD=)\S+

解释:

(?<=...) - 正面回顾 - 断言当前位置之前的内容与内部模式匹配(代替 ...

WARD= - 按字面意思匹配 WARD=

\S+ - 匹配一个或多个非空格,所以只要没有空格就会匹配。

Regex demo

编辑

为了完整起见,我将附加@MarcoLuzzara 建议,即模式 WARD=(\S+)

这里的逻辑有点变化,所以让我解释一下新的构造:

(...) - 捕获组,匹配内部模式并将其存储在捕获组中。

Another demo.

my ($ward) = $str =~ /\bWARD=(\S*)/
   or die("Missing ward);

\b 阻止 FORWARD=... 匹配。