任何人都可以找到以下表达式的perl正则表达式吗?

时间:2013-04-24 19:26:27

标签: regex perl

我正在尝试将下面的表达式列表转换为它们的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>

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

你可以简单地“或”全部,根据需要逃脱。您可以使用'?'来缩短它。

这不是一个干净或优雅的解决方案,但我想它可以很好地用于您的目的。