我使用的是崇高的文本2编辑器。 我想用正则表达式匹配所有之间的所有字符h1
标签。
截至目前我使用这样的
<h1>.+</h1>
它的工作很好,如果h1标签没有休息。
我的意思是
<h1>Hello this is a hedaer</h1>
它的工作的罚款。
但其如果标签看起来像这样不工作
<h1>
Hello this is a hedaer
</h1>
有人可以帮助我的语法?
我使用的是崇高的文本2编辑器。 我想用正则表达式匹配所有之间的所有字符h1
标签。
截至目前我使用这样的
<h1>.+</h1>
它的工作很好,如果h1标签没有休息。
我的意思是
<h1>Hello this is a hedaer</h1>
它的工作的罚款。
但其如果标签看起来像这样不工作
<h1>
Hello this is a hedaer
</h1>
有人可以帮助我的语法?
在默认情况下.
除了新行字符每一个字符相匹配。
在这种情况下,你需要DOTALL选项,这将使.
匹配任意字符,包括新行字符。 DOTALL选项可以在线为指定(?s)
例如:
(?s)<h1>.+</h1>
但是,你会看到,它不会工作,因为量词的默认行为是贪婪 (在这种情况下,其+
),这意味着它会尝试使用尽可能多的字符可能。 你需要使它懒惰通过添加额外的(消费尽可能少的字符越好) ?
后量词+?
:
(?s)<h1>.+?</h1>
可替换地,正则表达式可以是<h1>[^<>]*</h1>
在这种情况下,你不需要指定任何选项。
由于这个问题是顶级的谷歌搜索结果的正则表达式试图找到所有的h1标签我想我会给这个问题的答案,以及之间的字符。 因为这是我所期待的。
(?s)(?<=<h1>)(.+?)(?=</h1>)
该正则表达式,如果在类似样品中使用的<h1>A title</h1> <p>Some content</p> <h1>Another title</h1>
将只返回A title
。