如何使用perl regex函数提取字符串值?

时间:2011-12-27 14:11:12

标签: regex perl

my $test = "<test1>INVOICE STATUS&lt";

我尝试使用正则表达式:

if ( $test =~  m/(<.*.>)/g){
print "matched $1";
}

获得的输出是"lt;test1>".

任何人都可以建议使用正确的功能,提前谢谢。

3 个答案:

答案 0 :(得分:1)

你可以尝试:

/>([^&]+)<\//g

示例:

$_ = "&lt;test1&gt;INVOICE STATUS&lt;/test1&gt;&lt;test2&gt;NON-PO INVOICE&lt;/test2&gt;<o:p></o:p></b></p><p class=MsoPlainText><b>&lt;test3&gt;please specify&lt;/test3&gt;<o:p></o:p></b></p><p class=MsoPlainText><b>&lt;test4&gt;please specify&lt;/test&gt;";

while(/&gt;([^&]+)&lt;\//g){
        print "$1\n";
}

输出:

INVOICE STATUS
NON-PO INVOICE
please specify
please specify

答案 1 :(得分:0)

/([-a-zA-Z]\s[a-zA-Z])/g

第一个单词匹配字母或 - ,空格,第二个单词仅字母。

编辑:或/&gt;(.*?)&lt;/g

您的方括号与您原始正则表达式中的方式相反。

答案 2 :(得分:0)

$1包含第一个捕获组的最后一个匹配项,该组由()分隔。

请尝试:/&lt;(.*.)&gt;/

相关问题