为什么正则表达式模式与代码不匹配?

发布于 2024-12-10 04:58:07 字数 545 浏览 0 评论 0原文

您知道为什么这个正则表达式与下面的代码不匹配吗?

$regex = "!<title>(.*?)</title>!i";

代码:

<b:include data='blog' name='all-head-content'/>
<title>
    <b:if cond='data:blog.homepageUrl == data:blog.url'>
        <data:blog.title/>
    <b:else/>
        <data:blog.pageName/> &raquo; <data:blog.title/>
    </b:if>
</title>
<link href='http://fonts.googleapis.com/css?family=Open+Sans:400,700' rel='stylesheet' type='text/css'/>

Do you have any idea why this regex does not match the code below?

$regex = "!<title>(.*?)</title>!i";

code:

<b:include data='blog' name='all-head-content'/>
<title>
    <b:if cond='data:blog.homepageUrl == data:blog.url'>
        <data:blog.title/>
    <b:else/>
        <data:blog.pageName/> » <data:blog.title/>
    </b:if>
</title>
<link href='http://fonts.googleapis.com/css?family=Open+Sans:400,700' rel='stylesheet' type='text/css'/>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

垂暮老矣 2024-12-17 04:58:07

不要使用正则表达式来解析 XML。

您的表达式不起作用,因为点与新行不匹配。添加 DOTALL 修饰符 /.../s 可以解决这个问题,但是你会遇到其他问题,比如贪婪匹配而不是懒惰匹配。

使用 XML 解析器会是一个更好的主意。

Don't use regular expressions to parse XML.

Your expression doesn't work because the dot doesn't match new lines. Adding the DOTALL modifier /.../s would fix that, but then you'll have other problems like matching greedily instead of lazy.

Using an XML parser would be a better idea.

夏末的微笑 2024-12-17 04:58:07

这是我对正确正则表达式的建议:

(?<=<title>)(.*)(?=</title>)

Here is my suggestion for a correct regex:

(?<=<title>)(.*)(?=</title>)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文