Objective c 用于删除块级标记之前出现的XHTML换行符的正则表达式

Objective c 用于删除块级标记之前出现的XHTML换行符的正则表达式,objective-c,regex,html-parsing,lookbehind,Objective C,Regex,Html Parsing,Lookbehind,我需要一个正则表达式来查找块标记之前出现的无关的标记,而保留所有其他标记不变 以下是我正在搜索的文本: <div>some text<br id="first"/>some more text<br id="second"/></div> 一些文本更多文本 但是,在使用以下正则表达式时: </? *br.*?>(?=</? *([^(br)]).*?) (?=(?=\s*不要使用正则表达式来解析HTML。您无法使用正则表达式

我需要一个正则表达式来查找块标记之前出现的无关的

标记,而保留所有其他

标记不变

以下是我正在搜索的文本:

<div>some text<br id="first"/>some more text<br id="second"/></div>
一些文本
更多文本
但是,在使用以下正则表达式时:

</? *br.*?>(?=</? *([^(br)]).*?)

(?=
(?=\s*不要使用正则表达式来解析HTML。您无法使用正则表达式可靠地解析HTML。一旦HTML与您的期望值发生变化,您的代码将被破坏。请使用适当的HTML解析模块。抱歉,我应该澄清:这将是一个有效的XHTML文档。将编辑我的问题以反映这一点。问题不是有效性但您的代码是基于文档的文本表示的,该文档可能会更改,但仍然是有效的XHTML。我已经多次重读了您的问题,但我仍然不明白。是否要匹配第二个

标记,因为
标记会立即出现?您对ma的具体规则是什么安德列斯特:这很公平,但我的问题不是我要开始一个项目,我应该采取什么方法。我现有的工作代码使用RegEx和NSXMLParser(一个解析模块),在可接受的范围内完成这项工作。对我的问题的回答会使成功率稍微提高一点。
<br id="first"/>some more text<br id="second"/>
<br[^<>]*>(?=\s*<(?!br))
<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)