2011-12-27 2 views
-1
my $test = "<test1>INVOICE STATUS&lt"; 

Я попытался с регулярным выражением, как:Как извлечь строковое значение с помощью функции regex perl?

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

Выход получен был "lt;test1>".

Может ли один предложить право функцию, которая будет использоваться, спасибо заранее.

ответ

0

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

Первое слово соответствует буквы или -, пространство, второе слово только буквы.

EDIT: Или />(.*?)</g

у вас есть скобки обращенные от того, как вы хотите их в исходном регулярном выражении.

0

$1 содержит последнее совпадение первой группы захвата, которое разделено ( и ).

Попытка: /<(.*.)>/ вместо этого.

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 
Смежные вопросы