Regex Perl:我犯了什么错误?
我使用cgi perl能够在浏览器上查看文件内容。我有以下要求:Regex Perl:我犯了什么错误?,regex,perl,Regex,Perl,我使用cgi perl能够在浏览器上查看文件内容。我有以下要求: 所有以“服务”一词开头的行必须打印为标题(H4) 所有其他行必须打印为段落(P) 我试过下面的代码,但它不工作。所有行都打印为标题(H4)。我犯了什么错误吗 use strict; use warnings; use diagnostics; printf "Content-type: text/html\n\n"; print <<HTML; <HTML>
- 所有以“服务”一词开头的行必须打印为标题(H4)
- 所有其他行必须打印为段落(P)
use strict;
use warnings;
use diagnostics;
printf "Content-type: text/html\n\n";
print <<HTML;
<HTML>
<HEAD>
<TITLE>DataPower_Status</TITLE>
</HEAD>
HTML
open FILE, "dpstatus" or die "could not open filename";
while(<FILE>) {
if ($_^"Service")
{
printf "<TR><TD><H4>$_</H4></TD></TR>\n";
}
else {
printf "<TR><TD><p>$_</p></TD></TR>\n";
}
}
close FILE;
print <<HTML;
</body>
</html>
HTML
使用严格;
使用警告;
使用诊断;
printf“内容类型:text/html\n\n”;
打印以下内容:
根本不使用正则表达式;它只是带有参数$和的异或运算符^
。所以这根本不是你想要的
相反,请将其更改为:
if ($_ =~ m/^Service/)
或者,更简洁地说,这是:
if (/^Service/)
这:
根本不使用正则表达式;它只是带有参数$和的异或运算符^
。所以这根本不是你想要的
相反,请将其更改为:
if ($_ =~ m/^Service/)
或者,更简洁地说,这是:
if (/^Service/)
从
二进制“^”返回其逐位异或的操作数
因此,您可能需要正则表达式/^Service/
,而不是XOR操作
从
二进制“^”返回其逐位异或的操作数
因此,您可能希望使用regex/^Service/
而不是XOR操作。它工作起来绝对正常。您能解释一下我的代码不工作的原因吗?你在代码中到底做了什么?@user2607367:Re:为什么你的代码不起作用:只是它与你试图做的事情无关。如果你能解释为什么你认为你的代码可以工作,我可以试着解决你的误解。Re:my code的作用:$\u=~ m/^Service/
将正则表达式^Service
(意思是“以Service
开头”)应用于$\uCode>的值。我对perl是新手。因此,我认为使用这段代码if($\u^“Service”)
可以解决我的问题。但是,我没有正确使用正则表达式。在perl中是否有任何定义/特定的使用正则表达式的方法?是的m/regexp/
将匹配并重新设置s/regex/replace/
将像sed一样进行替换。如果要将其应用于特定变量(默认值为$),请使用=~
。例如,if($variable=~m/some_text/)
@user2607367:($uu^“服务”)
类似于($uu+“服务”)
或($u124|“服务”)
:它只是带有两个参数的操作员^
,$和“服务”
。它没有什么“正则表达式”。(这个^
操作符是一个位异或)它工作得非常好。你能解释一下为什么我的代码不工作吗?你在代码中到底做了什么?@user2607367:Re:为什么你的代码不起作用:只是它与你试图做的事情无关。如果你能解释为什么你认为你的代码可以工作,我可以试着解决你的误解。Re:my code的作用:$\u=~ m/^Service/
将正则表达式^Service
(意思是“以Service
开头”)应用于$\uCode>的值。我对perl是新手。因此,我认为使用这段代码if($\u^“Service”)
可以解决我的问题。但是,我没有正确使用正则表达式。在perl中是否有任何定义/特定的使用正则表达式的方法?是的m/regexp/
将匹配并重新设置s/regex/replace/
将像sed一样进行替换。如果要将其应用于特定变量(默认值为$),请使用=~
。例如,if($variable=~m/some_text/)
@user2607367:($uu^“服务”)
类似于($uu+“服务”)
或($u124|“服务”)
:它只是带有两个参数的操作员^
,$和“服务”
。它没有什么“正则表达式”。(^
运算符是位异或。)