Замените имя тега, оставив остальное как есть - PullRequest
0 голосов
/ 06 февраля 2019

Я хочу в предисловии сказать, что я новичок в regex, и я потратил немало времени, пытаясь решить эту проблему самостоятельно, используя учебные пособия, онлайн-документы и т. Д. Я также ознакомился с предлагаемыми здесь ответами.

Теперь вот моя проблема: у меня 267 строк, подобных этой, и каждый округ отличается.

<SimpleData name="NAME">Angelina</SimpleData>

Что мне нужно сделать, это заменить NAME на COUNTY, а остальные оставить прежними.включая правильное название округа:

<SimpleData name="COUNTY">Angelina</SimpleData>

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

<SimpleData name="NAME">[\S\s\n]*?</SimpleData>

Это, вероятно, не лучший способсделать это, но это сработало.

Надеюсь, я объяснил это, чтобы это можно было понять.Спасибо, Пол

Ответы [ 2 ]

0 голосов
/ 07 февраля 2019

Вы действительно не хотите использовать регулярные выражения для этой работы.Изучите XSLT.

Любая попытка сделать это с помощью регулярных выражений будет либо соответствовать тому, чего не следует, либо не соответствовать тому, что должно.Это не потому, что вам не хватает навыков регулярных выражений, это из-за теории компьютерных наук: грамматика XML определяется рекурсивно, а регулярные выражения не могут обрабатывать рекурсивно определенные грамматики.

0 голосов
/ 06 февраля 2019

Вам необходимо использовать группы захвата с обратными ссылками в поле замены:

Найти что : (<SimpleData name=")NAME(">[\S\s\n]*?</SimpleData>) Заменить на : $1COUNTY$2

См. Демонстрационную версию regex

Согласно регулярным выражениям.info:

Помимо группировки части регулярного выражения вместе, круглые скобки также создают пронумерованную группу захвата.В скобках хранится часть строки, совпадающая с частью регулярного выражения.

Если ваше регулярное выражение имеет с именем или нумерованных групп захвата , то выможет повторно вставить текст, соответствующий любой из этих групп захвата, в тексте замены.Ваш замещающий текст может ссылаться на столько групп, сколько вам нужно, и даже может ссылаться на одну и ту же группу более одного раза.Это позволяет изменять порядок текста, сопоставляемого с регулярным выражением, различными способами.

Обратите внимание, что в VSCode нельзя использовать именованные группы.

...