在Sublime Text中替换开放式HTML正则表达式匹配

时间:2013-08-24 05:37:15

标签: regex sublimetext2 regex-negation boost-regex

我在Sublime Text中一直在做很多寻找和替换,并决定我需要学习RegEx。到现在为止还挺好。我无论如何都不是专家,但我很快就学会了。

问题在于知道如何替换开放式HTML匹配。

例如,我想查找没有<button>属性的所有role。 经过一些黑客攻击和搜索后,我想出了以下模式(see in action):

<button(?![^>]+role).*?>(.*?)

大!除了在我工作的代码库中,有大量的结果 如何在role=button末尾注入<button,在开始标记中的结束>之前安全地替换结果?

期望的结果
之前:<button type="button">
之后:<button type="button" role="button">

之前:<button class="btn-lg" type="button">
之后:<button class="btn-lg" type="button" role="button">

1 个答案:

答案 0 :(得分:1)

您可以在结束>之前捕捉所有内容,并在插入role=button之前将其放回去:

<(button(?![^>]+role).*?)>

这会捕获标记中的所有内容。

替换为:

<$1 role="button">

$1包含第一个正则表达式捕获的内容。

请参阅updated regexr