2017-02-01 6 views
0

У меня есть код XML:Как заменить все строки на основе предыдущих строк в Notepad ++?

<Line1>Matched_text Other_text</Line1> 
<Line2>Text_to_replace</Line2> 

Как сказать Notepad ++ найти Matched_text и заменить Text_to_replace на Replaced_text? Существует несколько подобных блоков кода, с одним точно Matched _text и разными Other_text и Text_to_replace. Я хочу заменить все за один раз.

Моя идея заключается в том, чтобы положить

Matched_text*<Line2>*</Line2> 

в поле Найти и

Matched_text*<Line2>Replaced_text</Line2>  

в поле Replace. Я знаю, что \1 в regex может быть полезным, но я не знаю с чего начать.


Фактический код:

<Name>Matched_text, Other_text</Name> 
<IsBillable>false</IsBillable> 
<Color>-Text_to_replace</Color> 

ответ

2

Регулярное выражение вы ищете что-то вроде следующего.

Поиск: (Matched_text[\w,\s<>\/]*<Color>-).*(</Color>)

Заменить: \1Replaced_text\2

Сломался:

`()` is how you tell regex that you want to keep things (for use in /1, /2, etc.), these are called capture groups in regex land. 

`Matched_text[\w,\s<>\/]*` means you want your anchor `Matched_text` and everything after it up till the next part of the expression. 

`<Color>-).*(</Color>)` Select everything between <Color>- and </Color> for replacement. 

Если у вас есть какие-либо вопросы по поводу выражения, я настоятельно рекомендую посмотреть на regex cheatsheet.

Make your NPP Find/Replace look like this

+0

К сожалению, я забыл упомянуть о 'Text_to_replace' различны в каждом блоке. Есть ли способ заменить все сразу? – Ooker

+0

Обновлен мой ответ, но я могу быть настолько точным без фактического примера того, с чем вы работаете. Так что надеюсь, что обновленные строки выше работают для вас. –

+0

Я также обновил фактический код в своем вопросе. Я также попытался проверить примерное решение с примером кода, но он не может его найти. Я использую последнюю версию Notepad ++ – Ooker