2012-01-04 2 views
0

У меня очень плохо отформатированный XML-файл, и я ищу, чтобы заменить имена некоторых тегов.Поиск и замена регулярных выражений

Например ...

<column name="id">1</column> 

должен стать

<id>1</id> 

У меня есть более 7000 статей и не представляете себе делать это вручную. Я использую Dreamweaver's Find & Замените. Очевидно, что значение «1» в примере представляет собой динамическое значение.

Приветствия для любой помощи ...

+0

Если у вас есть некоторые знания о XSLT, то это может быть сделано с помощью таблицы стилей (I не смею сказать «просто», мне никогда не удавалось написать его менее чем за 30 минут ...) – fge

ответ

2

Поиск:

<column name="id">(\d+)</column> 

Replace с

<id>$1</id> 

Убедитесь, что вы проверить Использовать регулярные выражения в диалоговом окне.

See further on Adobe's site.

+1

Скорее всего, OP искал ' (\ d +) 'будет заменено на' <$1> $ 2 ', но направление будет выглядеть правильно. – dasblinkenlight

+0

Вы оба правы. Спасибо за точный и быстрый ответ. – jayfield1979

+0

Да, обобщение с приведенным выше решением выглядит так, как идти – fge

0

Поиск: <column name="id">(.*)</column> Заменить: <id>\1</id>

0

Простое решение питон, вероятно, проще с помощью Perl:

import re  # regular expression 
import sys  # command line arguments 

pat = re.compile(r'<column name=\"id\">(\d*)</column>', re.IGNORECASE) 

if __name__=='__main__': 
    filename = sys.argv[1] 

    for line in open(filename): 
     matchObj = pat.search(line) 
     if matchObj != None: 
      s"<id>" + matchObj.group(1) + "</id>" 
     else: 
      print line 
Смежные вопросы