Gir*_*iri 17 regex sublimetext2 sublimetext3
我正在使用sublime text 2编辑器.我想使用正则表达式来匹配所有h1
标签之间的所有字符.
截至目前我正在使用这样的
<h1>.+</h1>
Run Code Online (Sandbox Code Playgroud)
如果h1标签没有中断,它的工作正常.
我的意思是
<h1>Hello this is a hedaer</h1>
Run Code Online (Sandbox Code Playgroud)
它的工作正常.
但如果标签看起来像这样,它就不起作用了
<h1>
Hello this is a hedaer
</h1>
Run Code Online (Sandbox Code Playgroud)
有人可以帮我解释语法吗?
Ani*_*dha 44
默认情况下,.
匹配除新行字符之外的每个字符
在这种情况下,您将需要DOTALL选项,它将.
匹配任何字符,包括换行符.DOTALL选项可以内联指定为(?s)
.例如:
(?s)<h1>.+</h1>
Run Code Online (Sandbox Code Playgroud)
但是,你会发现它不起作用,因为量词的默认行为是贪婪的(在这种情况下是它+
),这意味着它会尝试消耗尽可能多的字符.你需要通过在量词之后添加额外来使它变得懒惰(消耗尽可能少的字符):?
+?
(?s)<h1>.+?</h1>
Run Code Online (Sandbox Code Playgroud)
或者,正则表达式可以是<h1>[^<>]*</h1>
.在这种情况下,您无需指定任何选项.
ayc*_*dee 25
由于这个问题是搜索正则表达式试图查找h1标签之间的所有字符的Google搜索结果,我认为我也会给出答案.因为那是我想要的.
(?s)(?<=<h1>)(.+?)(?=</h1>)
Run Code Online (Sandbox Code Playgroud)
如果在样本文本上使用该正则表达式<h1>A title</h1> <p>Some content</p> <h1>Another title</h1>
只会返回A title
.