Удалить дефисы в теге xml только с помощью регулярных выражений - PullRequest
0 голосов
/ 27 февраля 2019

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

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

Итак, мне нужно удалить тире между словом ( \ w в регулярном выражении, поскольку оно может также содержать числа), которые заключены в <> символов

Я построил это регулярное выражение

(?<=\w)-(?=\w)

Но оно соответствует КАЖДОМУ тире, заключенному между \ w .Мне нужно сопоставить только те, которые заключены в <> :

<text-numbers>

Не могли бы вы помочь мне?Большое спасибо заранее

Андреа

1 Ответ

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

Я предлагаю

(\G(?!^)|</?)(\w*)-

Заменить на $1$2.См. regex demo .

Подробности

  • (\G(?!^)|</?) - Группа 1 ($1 в шаблоне замены): либоконец предыдущего совпадения или < с необязательным / после него (если вы определяете шаблон внутри литерала регулярного выражения с / в качестве разделителей, экранируйте / как \/)
  • (\w*) - группа 2 ($2 в шаблоне замены): ноль или более символов слова
  • - - дефис.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...