拆分变量并放入数组

时间:2010-08-13 11:32:18

标签: perl pattern-matching

我有一个像<name>sekar</name>这样的字符串。我想拆分这个字符串(我正在使用perl)并仅取出sekar,并将其推入数组,同时留下其他内容。

我知道如何进入一个数组,但却被分裂部分击中。

有人知道这样做吗?

3 个答案:

答案 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对其进行了测试,但它确实有效。