Разделение переменной и помещение в массив - PullRequest
0 голосов
/ 13 августа 2010

У меня есть такая строка <name>sekar</name>. Я хочу разбить эту строку (я использую Perl) и вынуть только sekar, и вставить его в массив, оставляя другие вещи.

Я знаю, как запихнуть в массив, но ударил с расщеплением части.

Есть ли у кого-нибудь идеи сделать это?

Ответы [ 3 ]

1 голос
/ 13 августа 2010
push @output, $1 if m|<name>(\w*)</name>|;
1 голос
/ 13 августа 2010

Попробуйте это:

my($name) = $string =~ m|<name>(.*)</name>|;

Из perldoc perlop:

Если опция "/ g" не используется, "m //" в контексте списка возвращает список, состоящий из подвыражений, сопоставленных круглые скобки в шаблоне, то есть ($ 1, $ 2, $ 3 ...).

0 голосов
/ 13 августа 2010

Попробуйте <(("[^"]*"|'[^']*'|[^'">])*)>(\w+)<\/\1>.Должен работать, когда я вернусь домой, я проверю это.Идея состоит в том, что первая группа захвата находит содержимое в <>, а ее вложенная группа захвата предотвращает ситуацию, подобную <blah=">">, совпадающему как <blah=">.Третья группа захвата (\w+) соответствует внутреннему слову.Это может быть изменено в зависимости от формата возможностей, которые вы можете иметь в <tag>content</tag>.Наконец, \1 оглядывается на содержимое первой группы захвата, так что таким образом вы найдете правильный закрывающий тег.

Edit : я протестировал это с perl иработы.

...