Преобразование отрицательного просмотра вперед регулярного выражения в жадный - PullRequest
0 голосов
/ 01 августа 2020

Задача, которую я пытаюсь решить, кажется довольно простой - мне нужно выбрать все теги изменения шрифта, кроме одного (AIGDT). Я собираюсь вырезать их, чтобы упростить дальнейшую обработку текста. Я пытаюсь использовать отрицательное предварительное выражение регулярного выражения следующим образом:

Font='(?!(AIGDT))(.*)'

Но для образца однострочного текста:

<StyleOverride Font='Arial' FontSize='0,32971'>[</StyleOverride><StyleOverride FontSize='0,21558'> </StyleOverride><StyleOverride Font='AIGDT' Italic='False'>n</StyleOverride><DimensionValue/> <StyleOverride Font='Arial' FontSize='0,32971'>]</StyleOverride>

Он возвращает одно совпадение 200 + символов ... в то время как Я ожидаю двух 12-символьных совпадений (Font = 'Arial').

Я считаю, что это происходит из-за жадности просмотра вперед.

Может ли кто-нибудь намекнуть мне, в чем моя ошибка? Заранее спасибо.

1 Ответ

0 голосов
/ 01 августа 2020

Как Font='(?!(AIGDT))([^']+)' работает на вас?

По сути, сузьте второй захват до «чего угодно, кроме одинарной кавычки».

(Полное раскрытие: сейчас на моем телефоне так что я не запускал его, но теоретически он работает нормально)

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