gpt4 book ai didi

regex - 正则表达式匹配后未定义 Perl $1 变量

转载 作者:行者123 更新时间:2023-12-01 07:56:18 24 4
gpt4 key购买 nike

这对我来说可能是一个非常基本的错误,但我已经被这个问题困住了很长时间,这让我很沮丧!

我正在使用 Perl 遍历 Python 代码文件并识别其变量。我正在使用 Perl 正则表达式来挑选空格之间的字母数字字符的子字符串。正则表达式工作正常并标识匹配项所属的行,但是当我尝试返回与正则表达式匹配的实际子字符串时,捕获变量 $1未定义。

这是我的正则表达式:

if ($line =~ /.*\s+[a-zA-Z0-9]+\s+.*/) {
print $line;
print $1;
}

这是错误:
x = 1
Use of uninitialized value $1 in print at ./vars.pl line 7, <> line 2.

据我了解, $1应该返回 x .我的代码哪里出错了?

最佳答案

您没有捕获结果:

if ($line =~ /.*\s+([a-zA-Z0-9]+)\s+.*/) {

如果你想匹配像 x = 1 这样的行并获得它的两个部分,您需要匹配并用括号捕获两者。一个粗略的方法:
if ( $line =~ /^\s* ( \w+ ) \s* = \s* ( \w+ ) \s* $/msx ) {
my $var = $1;
my $val = $2;
}

关于regex - 正则表达式匹配后未定义 Perl $1 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26084332/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com