在为客户开发私有CMS时,我有一个想法,即实现基于php的服务器端和灵活的“语言”。
我很难找到一个reqular-expression查找(过滤器..)以下字符串([..]是代码,它将被过滤后解析),我想过滤掉字符串包含换行符。
<(
[..]
)>
我整夜都在寻找解决方案,但我找不到解决方案。
答案 0 :(得分:1)
首先:听取上面Dan Grossman的建议。
根据我目前对您的问题的理解,您希望获得<(
和)>
之间的逐字内容 - 没有例外,没有评论处理。
如果是这样,请尝试此RegExp
'/<\(((?:.|\s)*?)\)>/'
你可以像这样使用
preg_match_all('/<\(((?:.|\s)*?)\)>/', $yourstring, $matches)
它不需要区分大小写,并且它会进行延迟匹配(因此您可以将它应用于具有多个匹配实例的字符串)。
RegExp的解释:从<(
开始,以)>
结尾(当然是括号转义),中间是捕获组。从本质上讲,我们采用常规字符.
或空格\s
(这解决了您的问题,因为换行符也是空格)。我们不想捕获每个字符,因此内部组是非捕获的 - 只是空格或字符:(?:.|\s)
。这将重复任意次数(包括零),但仅在第一次匹配完成之前:*?
用于惰性0-n。这就是它,希望它有所帮助。