我是regex的新手,我需要从以下行中仅过滤开始和结束中断:
<br/><br/><br/><br/><br/><p>hello<br/>asdsadas</p><br/><br/><br/><br/><br/>
我正在使用的正则表达式是:
^[<br/>]+|[<br/>]+$
但这给了我以下结果:
p>hello<br/>asdsadas</p
我的要求是:
<p>hello<br/>asdsadas</p>
谁能告诉我哪里弄错了?提前谢谢。
答案 0 :(得分:2)
从技术上讲,你的正则表达式正在搜索任何一个字符&lt;,&gt;,b,r,/ independedly,正确的regexp是
^(<br/>)+|(<br/>)+$
但是当我在评论中提到时,尝试使用DOM / XML解析器而不是regexp(Javascript有一个,或直接使用DOM)
答案 1 :(得分:1)
正则表达式不是选择html的首选方法。但无论如何,试一试:
\<p\>(.*)?\<\/p\>
或者之间的其他内容可以是段落以外的其他内容吗?
答案 2 :(得分:0)
如果您使用preg_match
来隔离输入的中间(有趣)片段,那么正确的排列是
^(?:<br/>)*(.*?)(?:<br/>)*$
这会将序列<br/>
视为单个令牌,而在示例中使用尖括号则表示“任何字符<
,b
,r
,{ {1}},/
“ - 这就是您从>
代码中丢失尖括号的原因。