我有一个像<name>sekar</name>
这样的字符串。我想拆分这个字符串(我正在使用perl)并仅取出sekar
,并将其推入数组,同时留下其他内容。
我知道如何进入一个数组,但却被分裂部分击中。
有人知道这样做吗?
答案 0 :(得分:1)
试试这个:
my($name) = $string =~ m|<name>(.*)</name>|;
来自perldoc perlop:
如果未使用“/ g”选项,则列表上下文中的“m //”将返回a 由与之匹配的子表达式组成的列表 模式中的括号,即($ 1,$ 2,$ 3 ......)。
答案 1 :(得分:1)
push @output, $1 if m|<name>(\w*)</name>|;
答案 2 :(得分:-1)
试试<(("[^"]*"|'[^']*'|[^'">])*)>(\w+)<\/\1>
。应该工作,当我回到家时,我会测试它。我们的想法是,第一个捕获组在<>
内找到内容,其嵌套捕获组可以防止<blah=">">
匹配为<blah=">
的情况。第三个捕获组(\w+)
与内部单词匹配。这可能需要根据<tag>content</tag>
中可能具有的可能性的格式进行更改。最后,\1
会回顾第一个捕获组的内容,这样您就可以找到正确的结束标记。
编辑:我已经使用perl对其进行了测试,但它确实有效。