我是正则表达式的新手,我只需要从以下行过滤开始和结束中断:
<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>
谁能告诉我我哪里弄错了?提前致谢。
从技术上讲,您的正则表达式正在独立搜索任何此字符 <、>、b、r 和 /,正确的正则表达式是
^(<br/>)+|(<br/>)+$
但正如我在评论中提到的,尝试使用 DOM/XML 解析器而不是正则表达式(Javascript 有一个,或者直接使用 DOM)
正则表达式不是选择 html 的首选方法。但无论如何,试试这个:
\<p\>(.*)?\<\/p\>
或者两者之间的任何
东西都可以是段落之外的东西?
如果您preg_match用于隔离输入的中间(有趣)片段,则正确的表达式是
^(?:<br/>)*(.*?)(?:<br/>)*$
这会将序列<br/>视为单个标记,而在您的示例中使用尖括号表示“任何字符<, b, r, /, >” - 这就是您从<p>标签中丢失尖括号的原因。