1

我是正则表达式的新手,我只需要从以下行过滤开始和结束中断:

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

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

4

3 回答 3

2

从技术上讲,您的正则表达式正在独立搜索任何此字符 <、>、b、r 和 /,正确的正则表达式是

^(<br/>)+|(<br/>)+$

但正如我在评论中提到的,尝试使用 DOM/XML 解析器而不是正则表达式(Javascript 有一个,或者直接使用 DOM)

于 2013-09-11T08:28:05.153 回答
1

正则表达式不是选择 html 的首选方法。但无论如何,试试这个:

\<p\>(.*)?\<\/p\>

或者两者之间的任何
东西都可以是段落之外的东西?

于 2013-09-11T08:29:08.133 回答
0

如果您preg_match用于隔离输入的中间(有趣)片段,则正确的表达式是

^(?:<br/>)*(.*?)(?:<br/>)*$

这会将序列<br/>视为单个标记,而在您的示例中使用尖括号表示“任何字符<, b, r, /, >” - 这就是您从<p>标签中丢失尖括号的原因。

于 2013-09-11T08:30:00.233 回答