-3

我正在尝试将下面的表达式列表转换为它们的 perl 正则表达式等价物。在字符串中搜索该模式。在下面的表达式中 VARNAME 是动态的。它可以是任何字值。

 EXPRESSION                                     PERL REGULAR EXPRESSION
__________________                                _________________________
    ^TM1()^
    ^TM2()^
    ^TM3()^
    ^f(‘VARNAME’)^           ----------------        /\^f\(‘(\w*?)’\)\^/  
    ^f(‘VARNAME’).get()==’#’^
    ^f(‘VARNAME’)==’#’^
    ^f(‘VARNAME’).any(‘#’)^
    ^f(‘VARNAME’).toNumber()^
    ^f(‘VARNAME’).toString()^
    ^f(‘VARNAME’).toString().toLowerCase()^
    ^f(‘VARNAME’).toString().toUpperCase()^
    ^f(‘IFCONDITION’)?’THENTEXT’:’ELSETEXT’^
    <br>
    <br/>
    <br />
    &nbsp;
    ^MobileHeader()^
    ^MobileFooter()^
    <u>
    </u>
4

2 回答 2

3

利用quotemeta

while (<DATA>) {
   chomp;
   print quotemeta($_), "\n";   # or:  print "\Q$_\E\n";
}

__DATA__
^TM1()^
^TM2()^
^TM3()^
^f(‘VARNAME’)^
^f(‘VARNAME’).get()==’#’^
^f(‘VARNAME’)==’#’^
^f(‘VARNAME’).any(‘#’)^
^f(‘VARNAME’).toNumber()^
^f(‘VARNAME’).toString()^
^f(‘VARNAME’).toString().toLowerCase()^
^f(‘VARNAME’).toString().toUpperCase()^
^f(‘IFCONDITION’)?’THENTEXT’:’ELSETEXT’^
<br>
<br/>
<br />
&nbsp;
^MobileHeader()^
^MobileFooter()^
<u>
</u>
于 2013-04-24T20:01:47.227 回答
0

您可以简单地“或”它们全部,必要时转义。您可以使用“?”稍微缩短它。

这不是一个干净或优雅的解决方案,但我想它会很好地满足您的目的。

于 2013-04-24T19:33:31.860 回答