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+
- 匹配一个或多个非空格,所以只要没有空格就会匹配。
编辑
为了完整起见,我将附加@MarcoLuzzara 建议,即模式 WARD=(\S+)
这里的逻辑有点变化,所以让我解释一下新的构造:
(...)
- 捕获组,匹配内部模式并将其存储在捕获组中。
my ($ward) = $str =~ /\bWARD=(\S*)/
or die("Missing ward);
\b
阻止 FORWARD=...
匹配。
我有一个包含字符串的变量。我想从 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+
- 匹配一个或多个非空格,所以只要没有空格就会匹配。
编辑
为了完整起见,我将附加@MarcoLuzzara 建议,即模式 WARD=(\S+)
这里的逻辑有点变化,所以让我解释一下新的构造:
(...)
- 捕获组,匹配内部模式并将其存储在捕获组中。
my ($ward) = $str =~ /\bWARD=(\S*)/
or die("Missing ward);
\b
阻止 FORWARD=...
匹配。