最后一个字符串与正则表达式不匹配
我需要一些正则表达式帮助。我有我想要匹配的代码。
var i1 = "<ul> {{#items}}<li>{{.}}</li>{{/items}} </ul>";
var i2 = "<ul> {{#items}}<li>{{.}}</li> <li><ul> {{#items}}<li>{{.}}</li>{{/items}} </ul></li>{{/items}} </ul>";
var i3 = "<ul> {{#items}}<li>{{.}}</li>{{/items}} </ul> <ul> {{#items}}<li>{{.}}</li>{{/items}} </ul>";
var reg = /{{(?:(?:#|!#)([\s\w\.-]+))}}+(.+(?:{{\/.+}}))/
i1 => ["{{#items}}<li>{{.}}</li>{{/items}}", "items", "<li>{{.}}</li>"]
i2 => ["{{#items}}<li>{{.}}</li> <li><ul> {{#items}}<li>{{.}}</li>{{/items}} </ul></li>{{/items}}", "items", "<li>{{.}}</li> <li><ul> {{#items}}<li>{{.}}</li>{{/items}} </ul></li>"]
i3 => ["{{#items}}<li>{{.}}</li>{{/items}} </ul> <ul> {{#items}}<li>{{.}}</li>{{/items}}", "items", "<li>{{.}}</li>{{/items}} </ul> <ul> {{#items}}<li>{{.}}</li>"]
最后一张不符合我的要求。我只是希望它匹配第一个 ul#items,并在第一个 {{/items}} 出现时停止。前两个 reg 无需 html 标签即可工作。
我需要一些帮助来弄清楚如何完成最后一项。
谢谢
I need som regex help. I have this code that i want to match.
var i1 = "<ul> {{#items}}<li>{{.}}</li>{{/items}} </ul>";
var i2 = "<ul> {{#items}}<li>{{.}}</li> <li><ul> {{#items}}<li>{{.}}</li>{{/items}} </ul></li>{{/items}} </ul>";
var i3 = "<ul> {{#items}}<li>{{.}}</li>{{/items}} </ul> <ul> {{#items}}<li>{{.}}</li>{{/items}} </ul>";
var reg = /{{(?:(?:#|!#)([\s\w\.-]+))}}+(.+(?:{{\/.+}}))/
i1 => ["{{#items}}<li>{{.}}</li>{{/items}}", "items", "<li>{{.}}</li>"]
i2 => ["{{#items}}<li>{{.}}</li> <li><ul> {{#items}}<li>{{.}}</li>{{/items}} </ul></li>{{/items}}", "items", "<li>{{.}}</li> <li><ul> {{#items}}<li>{{.}}</li>{{/items}} </ul></li>"]
i3 => ["{{#items}}<li>{{.}}</li>{{/items}} </ul> <ul> {{#items}}<li>{{.}}</li>{{/items}}", "items", "<li>{{.}}</li>{{/items}} </ul> <ul> {{#items}}<li>{{.}}</li>"]
The last one don't match that i want. I just want it to match the first ul#items and stop when the first {{/items}} comes. The reg works without html tags for the first two.
I need some help to figure out how to do the last one.
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您的模式是贪婪的,这意味着它将匹配最大的可能字符串。使用
.*?
和.+?
而不是.*
和.+
。请查看此处,了解“贪婪”和“惰性”之间差异的更详细说明运营商。Your pattern is greedy, meaning it will match the largest possible string. Use
.*?
and.+?
instead of.*
and.+
. Check here for a more detailed explanation of the difference between the "greedy" and "lazy" operators.