Как я могу исключить совпадения регулярных выражений внутри блоков с определенным атрибутом? - PullRequest
1 голос
/ 10 июля 2019

Я пытаюсь сопоставить все теги, кроме тегов внутри текстовых областей, которые имеют атрибут "data-do-not-match-this = 'true" ". Учитывая, что у меня есть эта строка теста:

<textarea>{{one}}{{two}}</textarea> 

<textarea data-do-not-match-this="true">{{three}}{{four}}</textarea> 

<textarea>
{{five}}
{{six}}{{seven}}
</textarea> 

<textarea data-do-not-match-this="true">
{{eight}}
{{nine}}{{ten}}
</textarea>

{{eleven}}{{twelve}}

У меня пока есть это регулярное выражение:

(?<!data\-do\-not\-match\-this="true">)({{.*?}})

Регулярное выражение неправильно соответствует {{four}}, {{восемь}}, {{nine}} и {{ten}}. Как я могу исправить регулярное выражение, чтобы исключить теги, которые я не хочу сопоставлять?

Это мой Rubular:

https://rubular.com/r/TfjuwRd8dSjFJX

Ответы [ 2 ]

1 голос
/ 10 июля 2019

Было тяжело…

(?:<textarea data-do-not-match-this="true">.+?<\/textarea>.*?)?({{.*?}})

https://rubular.com/r/32MFMtZ2Ms3lOX

0 голосов
/ 10 июля 2019

Вот одна из возможностей:

<textarea[^>]+data-match-this="[^"]+"[^>]*>.*?<\/textarea>   

Демо

...