Я пытаюсь изменить некоторые тексты с помощью регулярных выражений.Это оригинальный текст:
<text xml:lang="en">"Insert Swab to Start Analysis"</text>
<text xml:lang="es"></text>
<text xml:lang="fr"></text>
<text xml:lang="de"></text>
<text xml:lang="pt"></text>
<text xml:lang="du"></text>
И это нужный текст:
<en>"Insert Swab to Start Analysis"</en>
<es>"Insert Swab to Start Analysis"</es>
<fr>"Insert Swab to Start Analysis"</fr>
<de>"Insert Swab to Start Analysis"</de>
<pt>"Insert Swab to Start Analysis"</pt>
<du>"Insert Swab to Start Analysis"</du>
Как вы можете видеть, произошли два изменения: измените теги и скопируйте исходный текст вцелевые языки.
Мне удалось сделать это с помощью двух разных регулярных выражений.
Первое регулярное выражение (скопировать исходный текст на целевые языки):
Search: (<text xml:lang=)"en">(.+?)(</text>)\r\n \1"es">\3\r\n \1"fr">\3\r\n \1"de">\3\r\n \1"pt">\3\r\n \1"du">\3
Replace: \1"en">\2\3\r\n \1"es">\2\3\r\n \1"fr">\2\3\r\n \1"de">\2\3\r\n \1"pt">\2\3\r\n \1"du">\2\3
Второе регулярное выражение (изменитьтеги):
Search: <text xml:lang="(en|es|fr|de|pt|du)">(.*?)(</[^>]*>)
Replace: <\1\>\2</\1>
Я вполне доволен результатом, но мне интересно, можно ли все это сделать с помощью одного регулярного выражения, а не двух.Второе регулярное выражение, которое я использовал, довольно элегантно, но оно не копирует исходный текст на разные целевые языки.Я подозреваю, что для правильной работы нужен небольшой трюк.Предложения?
PD: Я просто использую Notepad ++ для всего этого.
PD: Это большой XML-файл с большим количеством записей, не только тот, который я показываю вам здесь.