繁体   English   中英

正则表达式的换行符

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM