регулярное выражение соответствует всем в кавычках, но не в начале строки с косой чертой - PullRequest
0 голосов
/ 18 октября 2019

Regex в PHP с preg_replace ().
Соответствует всем в кавычках, но не в начале строки с косой чертой

исходный код:

// eehen nhdhdhd ooe "jjejej" ejeje "keihjen" jehhemm
jejej "jejeooe" kekek "jilnana" jennbeb

необходимый результат:

// eehen nhdhdhd ooe "jjejej" ejeje "keihjen" jehhemm
jejej <span class="red">"jejeooe"</span> kekek <span class="red">"jilnana"</span> jennbeb

Мое регулярное выражение соответствует только последнему в цитате. Я заменю все в кавычках, включая кавычки, на внешний Span, но не все в кавычках в строке комментария.

мое регулярное выражение:

'/^((?!\/\/).*)(".*")/m'

мое замена:

'$1<span class="red">$2</span>'

мой результат:

// eehen nhdhdhd ooe "jjejej" ejeje "keihjen" jehhemm
jejej "jejeooe" kekek <span class="red">"jilnana"</span> jennbeb

1 Ответ

1 голос
/ 18 октября 2019

Ваш якорь делает так, что ваш поиск начинается с начала строки, а затем продолжается. Я бы просто пропустил любые строки, начинающиеся с // s, используя глаголы PCRE.

^\/\/.*(*SKIP)(*FAIL)|("[^"]+")

, затем вы можете просто заменить на

<span class="red">$1</span>

https://regex101.com/r/bLkctu/1/

Для значений с учетом сущности:

^\/\/.*(*SKIP)(*FAIL)|(&quot;.*?&quot;)

https://regex101.com/r/bLkctu/2/

...