我需要一个RegEx,它会在块标记之前找到无关的<br />
标记,并保留所有其他<br />
标记。
以下是我要搜索的文字:
<div>some text<br id="first"/>some more text<br id="second"/></div>
但是,使用以下RegEx时:
</? *br.*?>(?=</? *([^(br)]).*?)
它会选择第一个<br />
标记之后的所有内容,如下所示:
<br id="first"/>some more text<br id="second"/>
......这不是我想要的。如何修改表达式,使其仅 选择<br id="second"/>
?
备注:所有内联代码 除了 <br />
标记在此之前被删除,因此它们不会是因子。另外,我使用的是Obj-C / Cocoa,所以我不能使用所有那些花哨的PHP函数。 :)。此外,这将是一个有效的XHTML文档。
答案 0 :(得分:0)
<br[^<>]*>(?=\s*<(?!br))
应该做你想做的事。 (See it here)
正则表达式的解释:
<br # Match <br
[^<>]* # followed by any number of non-bracket characters
> # and a >.
(?= # Assert that we are right before...
\s* # optional whitespace,
< # followed by any tag
(?!br) # except br
) # (End of lookahead)
一些意见:
</br>
。 <
和代码名称之间可能没有空格(/
和{{1}之间也可能没有空格})。>
是唯一合法的形式; <br />
无效。