Perl 中的匹配

SKS*_*SKS 2 perl matching

我试图在一行的两个点之间获取文本,但我的程序返回了整行。

例如:我的文字看起来像:

我的示例数据 1,2 用于 perl .version 1_1。

我使用了以下匹配语句

$x =~ m/(\.)(.*)(\.)/;
Run Code Online (Sandbox Code Playgroud)

我的 $x 输出应该是版本 1_1,但我将整行作为我的匹配项。

dar*_*rin 5

在您的代码中,匹配后 $x 的值不会改变。

当 $x 与m/(.)(.*)(.)/成功匹配时,您的三个捕获组将包含 '.'、'version 1_1' 和 '.' 分别(按照给定的顺序)。$2 会给你“版本 1_1”。

考虑到您可能只需要“版本 1_1”部分,您不需要捕获这两个点。此代码将为您提供相同的结果:

$x =~ m/\.(.*)\./;
print $1; 
Run Code Online (Sandbox Code Playgroud)