我正在将XML文件读入数组.XML文件中包含许多自由格式文本。 是否可以使用正则表达式来捕获数据。
XML文件:
<class>
<students>
<student>
<roll>1</roll>
<name>first_name
middle_name
last_name</name>
<remark>
some free
form text goes
here
</remark>
</student>
</students>
</class>
我正在尝试将值转换为数组:
arr[0] <class>
arr[1] <students>
arr[2] <student>
arr[3] <roll>1</roll>
arr[4] <name>first_name middle_name last_name</name>
arr[5] <remark>some free form text goes here </remark>
arr[6] </student>
arr[7] </students>
arr[8] </class>
我不太确定如何使用正则表达式处理多行文本。正则表达式正确吗?
答案 0 :(得分:1)
你可能想要使用一个XML解析器,它将带你到达你想去的地方:
$ perl -E 'use XML::Simple;
use Data::Dumper;
my $ref = XMLin("a.xml", NormaliseSpace => 2) ;
print Dumper $ref;'
$VAR1 = {
'students' => {
'student' => {
'remark' => 'some free form text goes here',
'name' => 'first_name middle_name last_name',
'roll' => '1'
}
}
};
答案 1 :(得分:1)
答案 2 :(得分:0)
清理任何空格和换行符以及您的好处。
您似乎正在使用perl,所以:
@result = $subject =~ m!((?:<.*?>)?(?:</?.*?>|\s+<remark>.*?)?(?:[\w|\s]+)?(?:\s*)?(?:</?.*?>)$)!simg;
<强> REGEX:强>
/((?:<.*?>)?(?:</?.*?>|\s+<remark>.*?)?(?:[\w|\s]+)?(?:\s*)?(?:</?.*?>)$)/simg