Вставить элементы (строки) в существующие теги XML, используя RegEX? - PullRequest
1 голос
/ 05 марта 2012

Вставить атрибуты (строки) в существующие теги.

Мне нужно вставить число, найденное в <pagenum><pagenum/>, в атрибут id=, поэтому в этом примере.

Я начинаю с:

<pagenum page="normal" id="page">1<pagenum/>

и мне нужно заменить его на:

<pagenum page="normal" id="page1">1<pagenum/>

Строка может содержать любое буквенно-цифровое значение.

Как бы выглядело это регулярное выражение? Как то так?

/s/<pagenum page="normal" id="page">1<pagenum//>/<pagenum page="normal" id="page"{Value}>1\<pagenum/>

Я слишком заржавел на своих ссылках ...

1 Ответ

2 голосов
/ 05 марта 2012
  • Я изменил разделитель регулярных выражений с / на!чтобы избежать путаницы)
  • для экранирования символов используется обратная косая черта, а не косая черта

Попробуйте:

s!(<pagenum page="normal" id=")([a-z0-9_-]+)(">)([0-9]+)(<pagenum/>)!\1\2\4\3\4\5!i

например:

echo '<pagenum page="normal" id="page">1<pagenum/>' | \
sed -r 's!(<pagenum page="normal" id=")([a-z0-9_-]+)(">)([0-9]+)(<pagenum/>)!\1\2\4\3\4\5!i'

Примечание - обычно закрывающий тег не является </pagenum> в отличие от <pagenum/>?

...