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,你能检查编辑的问题并让我知道代码中有什么错误吗?