Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在perl中匹配$END$_Perl - Fatal编程技术网

在perl中匹配$END$

在perl中匹配$END$,perl,Perl,当我使用该行时: if (m/^$END$/g) { # ... } 在我的代码中,编译器认为我在搜索代码中的静态“END$”, 而我想搜索字符串“$END$”。我该怎么做呢?要匹配文字$,只需用反斜杠将其转义: if (m/^\$END\$/) { ... } 删除了不应该存在的/g。要匹配文字$,只需使用反斜杠将其转义: if (m/^\$END\$/) { ... } if (/\A\Q $END$ /x) { ... } 删除了不应该存在的/g if (/\A\Q $E

当我使用该行时:

if (m/^$END$/g) { 
    # ...
}
在我的代码中,编译器认为我在搜索代码中的静态“END$”,
而我想搜索字符串“$END$”。我该怎么做呢?

要匹配文字
$
,只需用反斜杠将其转义:

if (m/^\$END\$/) { ... }

删除了不应该存在的
/g

要匹配文字
$
,只需使用反斜杠将其转义:

if (m/^\$END\$/) { ... }
if (/\A\Q $END$ /x) { ... }
删除了不应该存在的
/g

if (/\A\Q $END$ /x) { ... }
:

\Q
禁用模式元字符,直到
\E

删除了不应该存在的
/g

if (/\A\Q $END$ /x) { ... }
:

\Q
禁用模式元字符,直到
\E


删除了不应该在那里的
/g

如前所述(并且是一个近似值),该正则表达式查看变量
$END
中的值是否与
$中的整行匹配。第一个
$
前面需要一个反斜杠,以防止它被解释为变量开头的符号,如果第二个
$
前面没有标记行的结尾,则可能需要另一个反斜杠。我在给另一个人的评论中建议了
if(m/^\$END\$/gi)
(考虑到你最初的尝试包括
/I
修饰符和
/g
修饰符,这在这里可能并不需要)。是的@JonathanLeffler先生。现在我的问题是否符合SSCCE格式p这个问题很好。@JonathanLeffler我个人发现在我的代码(?)中“编译器(?)认为(?)我正在搜索一个静态(?)“END$”?这个短语非常令人困惑。用问号标记有问题的零件。如果(/…/g)
,切勿使用
。除了在概念上毫无意义外,它还可能导致奇怪、微妙、意外的结果。正如所写的(并且是第一个近似值),该正则表达式会查看变量
$END
中的值是否与
$\ucode>中的整行匹配。第一个
$
前面需要一个反斜杠,以防止它被解释为变量开头的符号,如果第二个
$
前面没有标记行的结尾,则可能需要另一个反斜杠。我在给另一个人的评论中建议了
if(m/^\$END\$/gi)
(考虑到你最初的尝试包括
/I
修饰符和
/g
修饰符,这在这里可能并不需要)。是的@JonathanLeffler先生。现在我的问题是否符合SSCCE格式p这个问题很好。@JonathanLeffler我个人发现在我的代码(?)中“编译器(?)认为(?)我正在搜索一个静态(?)“END$”?这个短语非常令人困惑。用问号标记有问题的零件。如果(/…/g)
,切勿使用
。除了在概念上毫无意义外,它还可能导致奇怪、微妙、意外的结果。
if (/\A\Q $END$ /x) { ... }