Reg-Ex用于过滤,解析和替换特定字符串? (PHP)

时间:2011-01-22 10:38:06

标签: php regex

在为客户开发私有CMS时,我有一个想法,即实现基于php的服务器端和灵活的“语言”。

我很难找到一个reqular-expression查找(过滤器..)以下字符串([..]是代码,它将被过滤后解析),我想过滤掉字符串包含换行符

<(
    [..]
)>

我整夜都在寻找解决方案,但我找不到解决方案。

1 个答案:

答案 0 :(得分:1)

首先:听取上面Dan Grossman的建议。

根据我目前对您的问题的理解,您希望获得<()>之间的逐字内容 - 没有例外,没有评论处理。

如果是这样,请尝试此RegExp

'/<\(((?:.|\s)*?)\)>/'

你可以像这样使用

preg_match_all('/<\(((?:.|\s)*?)\)>/', $yourstring, $matches)

它不需要区分大小写,并且它会进行延迟匹配(因此您可以将它应用于具有多个匹配实例的字符串)。


RegExp的解释:从<(开始,以)>结尾(当然是括号转义),中间是捕获组。从本质上讲,我们采用常规字符.或空格\s(这解决了您的问题,因为换行符也是空格)。我们不想捕获每个字符,因此内部组是非捕获的 - 只是空格或字符:(?:.|\s)。这将重复任意次数(包括零),但仅在第一次匹配完成之前:*?用于惰性0-n。这就是它,希望它有所帮助。