Извлечение чисел между XML-тегами и добавление некоторых чисел в виде одной текстовой строки.

Вопрос или проблема

Я пытаюсь извлечь число между двумя тегами. Вот <startSample>некоторое число</startSample> и <pitch>число с точкой</pitch>, добавив затем 10000 и 10200.

пример текста :

<audGrainData>
  <startSample>253</startSample>
  <pitch>14.1668348</pitch>
</audGrainData>
<audGrainData>
  <startSample>2390</startSample>
  <pitch>14.1668348</pitch>
</audGrainData>
<audGrainData>
  <startSample>4521</startSample>
  <pitch>14.1668348</pitch>
</audGrainData>
<audGrainData>
  <startSample>6475</startSample>
  <pitch>14.1668348</pitch>
</audGrainData>
<audGrainData>
  <startSample>8547</startSample>
  <pitch>14.2084284</pitch>
</audGrainData>

и я хочу, чтобы это выглядело так:

  253 14.1668348 10000 10200
  2390 14.1668348 10000 10200
  4521 14.1668348 10000 10200
  6475 14.1668348 10000 10200
  8547 14.2084284 10000 10200

  • Ctrl+H
  • Найти что: <audGrainData>\s+<startSample>(.+?)</startSample>\s+<pitch>(.+?)</pitch>\s+</audGrainData>\s*
  • Заменить на: $1 $2 10000 10200\n вы можете использовать \r\n для окончаний строк Windows
  • Установить Учитывать регистр
  • Установить Цикличный поиск
  • Режим поиска Регулярное выражение
  • Снять галочку . соответствует переносу строки
  • Заменить все

Объяснение:

<audGrainData>          # буквально
\s+                     # 1 или более пробелов, включая перенос строки
<startSample>           # буквально
(.+?)                   # группа 1, 1 или более любых символов
</startSample>          # буквально
\s+                     # 1 или более пробелов, включая перенос строки
<pitch>                 # буквально
(.+?)                   # группа 2, 1 или более любых символов
</pitch>                # буквально
\s+                     # 1 или более пробелов, включая перенос строки
</audGrainData>         # буквально
\s*                     # 0 или более пробелов, включая перенос строки

Скриншот (до):

введите описание изображения здесь

Скриншот (после):

введите описание изображения здесь

.

Ответ или решение

Извлечение чисел из XML-тегов и добавление значений

В данной статье мы рассмотрим задачу извлечения чисел из XML-тегов и формирования итоговой строки. Мы будем использовать приведенный ниже XML-код, в котором содержатся два ключевых тега: <startSample> и <pitch>. На выходе мы хотим получить отображение значений с добавлением заранее заданных чисел – 10000 и 10200.

Пример XML

XML-код, с которым мы будем работать, представлен ниже:

<audGrainData>
  <startSample>253</startSample>
  <pitch>14.1668348</pitch>
</audGrainData>
<audGrainData>
  <startSample>2390</startSample>
  <pitch>14.1668348</pitch>
</audGrainData>
<audGrainData>
  <startSample>4521</startSample>
  <pitch>14.1668348</pitch>
</audGrainData>
<audGrainData>
  <startSample>6475</startSample>
  <pitch>14.1668348</pitch>
</audGrainData>
<audGrainData>
  <startSample>8547</startSample>
  <pitch>14.2084284</pitch>
</audGrainData>

Ожидаемый результат

Мы хотим преобразовать данные в следующий формат:

253 14.1668348 10000 10200
2390 14.1668348 10000 10200
4521 14.1668348 10000 10200
6475 14.1668348 10000 10200
8547 14.2084284 10000 10200

Шаги для достижения результата

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

Построение регулярного выражения

  1. Найдите: <audGrainData>\s+<startSample>(.+?)</startSample>\s+<pitch>(.+?)</pitch>\s+</audGrainData>\s*

    • \s+ соответствует пробелам и переносам строк.
    • (.+?) используется для захвата значений между тегами.
  2. Замените на: $1 $2 10000 10200\n

Инструкции по замене

В вашем текстовом редакторе выполните следующие шаги:

  1. Нажмите Ctrl + H для открытия меню замены.
  2. В поле «Найти» вставьте регулярное выражение, описанное выше.
  3. В поле «Заменить на» вставьте строку $1 $2 10000 10200\n.
  4. Обязательно убедитесь, что выбраны параметры «Совпадение регистров» и «Обход» (Wrap around).
  5. Выберите режим поиска «Регулярное выражение» и отключите опцию «. совпадает с новой строкой».
  6. Нажмите Заменить все.

Объяснение регулярного выражения

  • <audGrainData> – ищем начало блока.
  • \s+ – пропускаем пробелы и переносы строк.
  • <startSample>(.+?)</startSample> – извлекаем число, находящееся между тегами <startSample>.
  • \s+<pitch>(.+?)</pitch> – затем извлекаем число, находящееся между тегами <pitch>.
  • \s+</audGrainData> – находим конец блока и учитываем пробелы.

Заключение

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

Если у вас возникли вопросы или нужна помощь с настройкой регулярных выражений, не стесняйтесь обращаться за консультацией.

Оцените материал
Добавить комментарий

Капча загружается...