如何过滤正则表达式中的单词?

时间:2013-09-11 08:24:27

标签: html regex

我是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>

谁能告诉我哪里弄错了?提前谢谢。

3 个答案:

答案 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/>视为单个令牌,而在示例中使用尖括号则表示“任何字符<br,{ {1}},/“ - 这就是您从>代码中丢失尖括号的原因。