我正在使用 sublime text 2 编辑器。我想使用正则表达式来匹配所有h1
标签之间的所有字符。
截至目前我正在使用这样的
<h1>.+</h1>
如果 h1 标签没有中断,它工作正常。
我的意思是
<h1>Hello this is a hedaer</h1>
它工作正常。
但如果标签看起来像这样,它就不起作用
<h1>
Hello this is a hedaer
</h1>
有人可以帮我语法吗?
我正在使用 sublime text 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>
但是,您会看到它不起作用,因为量词的默认行为是贪婪的(在本例中为+
),这意味着它将尝试使用尽可能多的字符。您需要通过在量词之后添加 extra 来使其变得懒惰(使用尽可能少的字符):?
+?
(?s)<h1>.+?</h1>
或者,正则表达式可以是<h1>[^<>]*</h1>
. 在这种情况下,您不需要指定任何选项。
由于这个问题是搜索正则表达式的顶级谷歌搜索结果,它试图找到h1 标签之间的所有字符,我想我也会给出这个答案。因为那是我一直在寻找的。
(?s)(?<=<h1>)(.+?)(?=</h1>)
该正则表达式,如果在示例文本上使用,<h1>A title</h1> <p>Some content</p> <h1>Another title</h1>
则只会返回A title
.