Java регулярное выражение - отрицательный запрос, возвращающий совпадение, даже если совпадение не должно существовать - PullRequest
0 голосов
/ 05 ноября 2018

У меня есть следующая строка:

<marker name="my.marker" cachedBy="all" affectedBy="typ1,type2">
<child1>bla</child1>
</marker>

То, что я хотел бы сделать, это поиск, чтобы идентифицировать первое вхождение >, используя следующее условие.

  1. Совпадение >, если в строке нет атрибута affectedBy=, например. affectedBy="type1". Потому что я хотел бы добавить это к этой строке. Поэтому я не хочу, чтобы это дублировалось, например. affectedBy="type1,type2", affectedBy="type1,type2"

  2. Соответствует только первому вхождению >, т. Е. Не глобальному совпадению.

Я попробовал следующее:

<(?!=(.*sharedBy=".*"))>

Но он возвращает совпадение для >, даже если присутствует affectedBy=. Я уверен, что это может быть что-то не так в моей логике, но не могу понять это. Любая помощь будет оценена.

1 Ответ

0 голосов
/ 06 ноября 2018

Я просто сделал следующее:

1) Если что-то соответствует affectedBy=.*>, игнорируйте.

2) В противном случае найдите первую группу, соответствующую (?=<marker name="my.marker".*)?>, а затем замените > на affectedBy="type1,type2>"

Не хотел писать разбор XML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...