正则表达式 - 贪婪 - 匹配HTML标签,内容和属性

fjd*_*ont 0 html php regex greedy regex-greedy

我正在尝试匹配HTML源代码中的特定span-tags.

lang-attribute和标记的内部HTML用作返回新字符串的函数的参数.

我想用被调用函数的结果替换旧标签,属性和内容.

主题是这样的:

<p>Some codesnippet:</p>
<span lang="fsharp">// PE001
let p001 = [0..999]
           |> List.filter (fun n -> n % 3 = 0 || n % 5 = 0)
           |> List.sum
</span>
<p>Another code snippet:</p>
<span lang="C#">//C# testclass
class MyClass {
}
</span>
Run Code Online (Sandbox Code Playgroud)

为了提取lang属性和内容的值,我使用以下表达式对这些值进行分组:

/(<span lang="(.*)">(.*)</span>)/is
Run Code Online (Sandbox Code Playgroud)

由于正则表达式趋于贪婪,因此该表达式与完整主题匹配,而不仅仅是一个span-tag及其内容.

我如何设法匹配一个span-tag?

Pas*_*TIN 5

我们永远不会重新考虑它:不要使用正则表达式来处理HTML!


相反,使用DOMDocument::loadHTML.

它允许您使用DOM操纵HTML数据,这更加强大和简单:您将能够:

真的:花点时间学习DOM:这是一项很棒的投资!