如何排除具有特定属性的块内的正则表达式匹配?

时间:2019-07-10 14:19:58

标签: regex ruby regex-negation

我正在尝试匹配除textarea中具有“ 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}},{{eight}},{{nine}}和{{ten}}。如何修复正则表达式以排除我不想匹配的标签?

这是我的Rubular:

https://rubular.com/r/TfjuwRd8dSjFJX

2 个答案:

答案 0 :(得分:1)

很难...

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

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

答案 1 :(得分:0)

这里是一种可能性:

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

Demo