Заменить два случая неверных закрывающих тегов - PullRequest
1 голос
/ 09 мая 2020

Пожалуйста, помогите мне с этим базовым c Примером RegEx.

Есть два случая, когда синтаксис допустим:

  • @ $ следует закрыть как $ @ (а не @ $);

  • $ @ следует закрывать как @ $ (а не $ @).

Чтобы заменить случаи использования недопустимого синтаксиса правильным синтаксисом в очень большом масштабе , мне сначала нужно найти эти случаи, используя регулярные выражения.

Проблема возникает, когда неправильный синтаксис сочетается с правильным синтаксисом. Обратите внимание на следующий тест на RegExr: https://regexr.com/548e8. Я также написал это ниже:

Выражение (должно соответствовать первому регистру):

/@(.*)\$(.*)@(.*)\$/gsU

Текст :

First case: @Correct $tags$ before@     @these $incorrect@ tags$
Second case: $Correct @tags@ before$     $these @incorrect$ tags@

The expression was written only for the first case.

Он начинается с начала первого раздела ($ @) и заканчивается в начале второго раздела (где он снова находит «$ @»).

Мне также нужен Keep флаги sU.

Спасибо!

1 Ответ

1 голос
/ 09 мая 2020

Вы можете использовать

/@([^@$]*)\$([^@$]*)@([^@$]*)\$|\$([^@$]*)@([^@$]*)\$([^@$]*)@g/

Или, чтобы оставаться в той же строке при сопоставлении, используйте

/@([^@$\n\r]*)\$([^@$\n\r]*)@([^@$\n\r]*)\$|\$([^@$\n\r]*)@([^@$\n\r]*)\$([^@$\n\r]*)@g/

См. демонстрацию регулярного выражения

Здесь [^@$\n\r]* соответствует любым 0+ вхождениям любого символа, кроме @, $, CR и LF. Две альтернативы объединяются оператором | OR.

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