正则表达式匹配之间的所有字符 标签(Regular expression to match a

2019-08-08 07:12发布

我使用的是崇高的文本2编辑器。 我想用正则表达式匹配所有之间的所有字符h1标签。

截至目前我使用这样的

<h1>.+</h1>

它的工作很好,如果h1标签没有休息。

我的意思是

<h1>Hello this is a hedaer</h1>

它的工作的罚款。

但其如果标签看起来像这样不工作

<h1>
   Hello this is a hedaer
</h1>

有人可以帮助我的语法?

Answer 1:

在默认情况下. 除了新行字符每一个字符相匹配。

在这种情况下,你需要DOTALL选项,这将使. 匹配任意字符,包括新行字符。 DOTALL选项可以在线为指定(?s) 例如:

(?s)<h1>.+</h1>

但是,你会看到,它不会工作,因为量词的默认行为是贪婪 (在这种情况下,其+ ),这意味着它会尝试使用尽可能多的字符可能。 你需要使它懒惰通过添加额外的(消费尽可能少的字符越好) ? 后量词+?

(?s)<h1>.+?</h1>

可替换地,正则表达式可以是<h1>[^<>]*</h1> 在这种情况下,你不需要指定任何选项。



Answer 2:

由于这个问题是顶级的谷歌搜索结果的正则表达式试图找到所有的h1标签我想我会给这个问题的答案,以及之间的字符。 因为这是我所期待的。

(?s)(?<=<h1>)(.+?)(?=</h1>)

该正则表达式,如果在类似样品中使用的<h1>A title</h1> <p>Some content</p> <h1>Another title</h1>将只返回A title



文章来源: Regular expression to match all characters between

tag