1

我正在尝试编写一个与特定类型的类似 HTML 的括号标签匹配的正则表达式。如果标签也在 HTML 注释中,这个表达式应该匹配标签,组 1 匹配标签之间的内容。

为了澄清,表达式应该同时匹配

[section]Blah blah blah[/section]

<!-- [section] -->Blah blah blah<!-- [/section] -->

这是我到目前为止所拥有的:

"(?:<!--\s*)?\[section](?:\s*-->)?(.*)(?:<!--\s*)?\[/section](?:\s*-->)?"

问题是第 1 组(即(.*))包括后续评论的潜在开始(即<!--\s*)。?在第二个组 1 之后删除from(?:<!--\s*)以将其排除在外,但是如果没有 HTML 注释语法,表达式将无法匹配标签。

我如何让第 1 组排除第二条评论开始(如果有),同时仍然保持那里不会有评论开始的可能性?

4

1 回答 1

2

?在 the 之后添加 a.*会使它“懒惰”,因此它不会匹配任何额外的结束标签。

(?:<!--\s*)?\[section](?:\s*-->)?(.*?)(?:<!--\s*)?\[/section](?:\s*-->)?
于 2013-11-14T01:17:10.677 回答