正则表达式抓取太多文本

时间:2014-01-13 23:33:51

标签: javascript regex string-matching

假设我有以下文字:

foo bar baz <!-- USERNAME --> <!-- ACCESS_KEY --> baz bar foo

<!--:USERNAME-->

<!-- eueuteh -->

 -DarchetypeVersion=<!-- java-version --> -UserName=<!-- :USERNAME --> -DsauceAccessKey=<!-- ACCESS_KEY --> 

我想要做的是用其他文字替换<!-- USERNAME -->。不幸的是,我创建的正则表达式实际上并没有按预期工作,例如替换整个<!-- java-version --> -UserName=<!-- :USERNAME -->表达式。前两次发生被正确更换。错误在哪里?

这是我在javascript控制台中测试的内容:

var re = new RegExp('(<!--)(.)*(USERNAME)(.)?(-->)');

2 个答案:

答案 0 :(得分:4)

正确的表达式似乎是

/<!--(.(?!-->))*USERNAME.*?-->/g

答案 1 :(得分:1)

我将以下技术用于HTML,XML等类似的东西(尽管在嵌套内容方面这是不好的做法)

正则表达式

(<[^>]*)(USERNAME)([^>]*>)


演示

http://regex101.com/r/lI8cV8