为什么正则表达式模式与代码不匹配?
您知道为什么这个正则表达式与下面的代码不匹配吗?
$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/> » <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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
不要使用正则表达式来解析 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.
这是我对正确正则表达式的建议:
Here is my suggestion for a correct regex: