[英]line break on regular expressions
我试图替换2个标签之间的所有内容,但我无法构建正确的表达式。
这就是我所做的:/ < /<tag>(.*|\\n*)</tag>/
我想要它捕获任何字符,包括换行符。
这是我需要捕获的一个例子:
<tag>
<div class="feed_title">Some Title</div>
<div class="feed_content">Some text</div>
</tag>
你们有些人能告诉我我做错了什么吗?
以下是RegExr的链接以及内容的完整示例: http ://regexr.com?2t4n1
也许你打算这样做?
# The ... in this example is your text to match
preg_match("#<tag>(.*?)</tag>#s","...",$matches);
这是一篇关于使用PHP 使用正则表达式提取XML数据的文章的链接,它有一些很好的例子。
'#.#m'
m表示MULTILINE,它使得点能够匹配换行符=换行符\\ n
编辑:
因为它已被锐利的眼睛和良好的大脑纠正,显然是'#。+#s'
EDIT2:
正如Michael Goldshteyn所说,这应该有效
$ch = '<tag>\s+<div class="feed_title">Some Title</div>\s+<div class="feed_content">Some text</div>\s+</tag>'
preg_match('#<tag>(.+?)</tag>#s',$ch,$match)
还有另一种解决方案,没有旗帜 ,我认为:
preg_match('#<tag>((.|\s)+?)</tag>#',$ch,$match)
但它更复杂
。
编辑3:
我认为$ ch中存在的\\是一个废话。 \\ s用于RE,而不是字符串。
我之所以写这篇文章,是因为我认为它可能是空白或者< t >可能在< tag >之前和其他行的开头
\\ t写着一个逃脱; 这不是写\\ S也是在字符串中的原因
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.