Perl匹配下面一个语句出错:$line 文件如下Chassis G1234 TC80-12M$line m/^Chassis\s+(\w{5,12})\s+(\w{2,9})\s+/ ;$a=$1; $b=$2;print $a"\n";print $b"\n"; # 这个值一直为空,由于TC80-12M 中有一个“-”,导致匹配失败,如何

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/12 17:34:50
Perl匹配下面一个语句出错:$line 文件如下Chassis G1234 TC80-12M$line m/^Chassis\s+(\w{5,12})\s+(\w{2,9})\s+/ ;$a=$1; $b=$2;print $a

Perl匹配下面一个语句出错:$line 文件如下Chassis G1234 TC80-12M$line m/^Chassis\s+(\w{5,12})\s+(\w{2,9})\s+/ ;$a=$1; $b=$2;print $a"\n";print $b"\n"; # 这个值一直为空,由于TC80-12M 中有一个“-”,导致匹配失败,如何
Perl匹配下面一个语句出错:
$line 文件如下
Chassis G1234 TC80-12M
$line m/^Chassis\s+(\w{5,12})\s+(\w{2,9})\s+/ ;
$a=$1; $b=$2;
print $a"\n";
print $b"\n"; # 这个值一直为空,由于TC80-12M 中有一个“-”,导致匹配失败,如何改表达式使之能正确匹配到“TC80-12M”?
如果$line 的内容为下面的其中一行,第二行这次不是“-”,而是一个空格,怎么样用一个通用的表达式把“TC80-12M”和“TC80 12M”匹配出来.
Chassis G1234 TC80-12M
Chassis G1234 TC80 12M
Jul 6,2011
由于初学,输入太少,只能写出下面的匹配语句,可以勉强完成"TC80-12M"&"TC80 12M"&"TC8012M",
$line m/^Chassis\s+(\w{5,12})\s+(\w{4,15})(\-|\s+)(\w+)/ ; # 如后面加g,匹配不完整,会漏掉空格和“-”后面部分.
$a=$1; $b=$2;$c=$3;
if ($3)
{
$line m/^Chassis\s+(\w{5,12})\s+(\w+(\-|?:\s+)\w+)/g ;
$a=$1; $b=$2;
}else{
$line m/^Chassis\s+(\w{5,12})\s+(\w{4,15})/ ;
}
print $a"\n ";
print $b"\n";

Perl匹配下面一个语句出错:$line 文件如下Chassis G1234 TC80-12M$line m/^Chassis\s+(\w{5,12})\s+(\w{2,9})\s+/ ;$a=$1; $b=$2;print $a"\n";print $b"\n"; # 这个值一直为空,由于TC80-12M 中有一个“-”,导致匹配失败,如何
模糊的,需要“TC80-12M”和“TC80 12M”最后一列出现.
m/Chassis\s+(\w+)\s+(.+)/g;
准确点的,使用或运算符(|),
m/Chassis\s+(\w+)\s+(\w+(?:\s|\-)\w+)/g;