Вопрос:

Regex для удаления начальных и конечных пробелов из файла XML

regex xml

55 просмотра

1 ответ

80 Репутация автора

Я пытался удалить все пробельные символы (включая \ r, \ n, \ t) из файла XML, используя следующее регулярное выражение:

    >([\r\n\t ])*([^ ]*[^<>]*[^ ]*)([\r\n\t ])*<

Но это регулярное выражение захватывает все теги XML в файле как одно совпадение. Как я могу улучшить это регулярное выражение для удовлетворения требований?

Строка ввода:

    <Address>
    <City>   New York   </City>
    <Zip> 1001 </Zip>
    </Address>

Ожидаемый результат (при замене на \ 2):

    <Address>
    <City>New York</City>
    <Zip>1001</Zip>
    </Address>
Автор: Siju Mohan MM Источник Размещён: 18.04.2017 06:03

Ответы (1)


1 плюс

14687 Репутация автора

>Регулярное выражение для сопоставления пробелов между a и символом слова.
Или пробелы между символом слова и</

(?<=[>])\s+(?=\w)|(?<=\w)\s+(?=[<]\/)

Тест здесь

Используя lookbehinds и lookahead, захватываются только пробелы.

Почему у вашего оригинального регулярного выражения были проблемы? Попробуйте этот пример и проверьте в объяснении, что происходит, когда вы удаляете ?из [\w ]+?. (жадный против ленивых)

Автор: LukStorms Размещён: 18.04.2017 08:09
Вопросы из категории :
32x32