我试图在一行的两个点之间获取文本,但我的程序返回了整行。
例如:我的文字看起来像:
我的示例数据 1,2 用于 perl .version 1_1。
我使用了以下匹配语句
$x =~ m/(\.)(.*)(\.)/;
Run Code Online (Sandbox Code Playgroud)
我的 $x 输出应该是版本 1_1,但我将整行作为我的匹配项。
在您的代码中,匹配后 $x 的值不会改变。
当 $x 与m/(.)(.*)(.)/成功匹配时,您的三个捕获组将包含 '.'、'version 1_1' 和 '.' 分别(按照给定的顺序)。$2 会给你“版本 1_1”。
考虑到您可能只需要“版本 1_1”部分,您不需要捕获这两个点。此代码将为您提供相同的结果:
$x =~ m/\.(.*)\./;
print $1;
Run Code Online (Sandbox Code Playgroud)