String Perl字符串匹配
我在使用String Perl字符串匹配,string,perl,substring,String,Perl,Substring,我在使用索引和=~操作符进行Perl字符串匹配/搜索时遇到了问题。我需要搜索字符串“RT@zaynmalik:cosmopolitanuk的大封面!看起来很圆滑的男孩http://example.com/FcWA80HI文本文件中的“” if($splitlines[1] =~ /RT @zaynmalik: Big cover for @cosmopolitanuk ! Boys looking slick http://example.com/FcWA80HI/){ ## Do s
索引和=~
操作符进行Perl字符串匹配/搜索时遇到了问题。我需要搜索字符串“RT@zaynmalik:cosmopolitanuk的大封面!看起来很圆滑的男孩http://example.com/FcWA80HI文本文件中的“
”
if($splitlines[1] =~ /RT @zaynmalik: Big cover for @cosmopolitanuk ! Boys looking slick http://example.com/FcWA80HI/){
## Do something ##
}
然而,因为“@
”在Perl中是一个特殊字符,所以我得到了编译错误。你能给我建议一个方法吗?我尝试将字符串保存到一个变量中,如$str
,但它没有起作用(这是可以理解的)
这就是我现在要做的
$max_freq_tweet = 'RT @zaynmalik: Big cover for @cosmopolitanuk ! Boys looking slick http://example.com/FcWA80HI';
if($splitlines[1] =~ /\Q$max_freq_tweet\E/){
print FILE5 "$splitlines2[1] \n";
}
但是它似乎仍然不起作用。您需要在regexp中转义@
。如$str=~/RT\@.*://
所示
编辑:还可以用反斜杠(\
)转义斜杠(/
)$str=~/RT\@.*:.*http:\/\/.*/
您需要在regexp中转义@
。如$str=~/RT\@.*://
所示
编辑:还可以用反斜杠(\
)转义斜杠(/
)$str=~/RT\@.*:.*http:\/\/.*/
您需要使用前面的\
(反斜杠)转义特殊字符
这不仅与@有关,也与其他字符有关
为了安全起见,您可以转义任何非字母字符 您需要使用前面的\
(反斜杠)转义特殊字符
这不仅与@有关,也与其他字符有关
为了安全起见,您可以转义任何非字母字符 通过反斜杠转义@
,或使用单引号
my $search_string = 'RT @zaynmalik: Big cover for @cosmopolitanuk ! Boys looking slick http://example.com/FcWA80HI';
# or: "RT \@zaynmalik: Big cover for \@cosmopolitanuk ! Boys looking slick http://example.com/FcWA80HI"
if (-1 != index $str, $search_string) { do something }
如果您有一个字符串并希望在正则表达式中使用它,则应确保通过\Q…\E
:
if ($str =~ /\Q$search_string\E/) { do something }
此\QUOT\E
不会阻止数组插值,但该字符串中的任何字符都不会被视为特殊字符;如果没有它,字符串中的
将匹配任何字符 通过反斜杠转义@
,或使用单引号
my $search_string = 'RT @zaynmalik: Big cover for @cosmopolitanuk ! Boys looking slick http://example.com/FcWA80HI';
# or: "RT \@zaynmalik: Big cover for \@cosmopolitanuk ! Boys looking slick http://example.com/FcWA80HI"
if (-1 != index $str, $search_string) { do something }
如果您有一个字符串并希望在正则表达式中使用它,则应确保通过\Q…\E
:
if ($str =~ /\Q$search_string\E/) { do something }
此\QUOT\E
不会阻止数组插值,但该字符串中的任何字符都不会被视为特殊字符;如果没有它,字符串中的
将匹配任何字符 我遇到编译错误
——什么错误?你试过什么?如果你想问一个问题,但实际上没有显示任何代码或错误消息,那么只有当有人真的猜到你做错了什么时,你才会幸运。@loldop无法在@INC
@TLP中找到telepathy.pm它只在Perl6
中:(我遇到编译错误
——什么错误?你尝试过什么?如果你想问一个问题,但实际上没有显示任何代码或错误消息,只有当有人真的猜到你做错了什么时,你才会幸运。@loldop无法在@INC
@TLP中找到telepathy.pm,它只在Perl6
中:(好的,那斜杠呢?好的,那斜杠呢?是的,我试过这么做,但我无法逃脱斜杠。实际上,我从一个文件中提取字符串,将其存储在一个变量中,然后在另一个充满tweet的文件中搜索该变量。因此,即使我反驳这种方法,它也不能完全解决问题y、 @Jones如果您要查找整个特定行,可能更容易使用eq
。或者像amon建议的那样使用索引。不,我正在检查是否存在子字符串。是的,我尝试过这样做,但无法避开斜杠。实际上,我正在从文件中提取该字符串,将其存储在变量中,然后搜索该字符串在另一个满是tweet的文件中是变量。因此,即使我反驳这种方法,也不能完全解决问题。@Jones如果你要查找整个特定行,可能更容易使用eq
。或者像amon建议的那样使用索引。不,我正在检查是否存在子字符串。没有子字符串…
任何特殊字符都会被删除o它自己的工作:)@amon,你能检查编辑的问题并让我知道代码中有什么错误吗?没有它…
任何特殊字符都会做它自己的工作:)@amon,你能检查编辑的问题并让我知道代码中有什么错误吗?