正则表达式,发现两个词
我这串之间的单词正则表达式,发现两个词
<p/><ul><li>test1<p/></li><li>test2<p/></li></ul><p/>
什么,我试图做的是提取“礼”标签中所有的“P”的标签,而不是“P”标签在它之外。
我只能这么远 由
\<li\>(.*?)\</li\>
提取所有的“礼”的标签,我在如何在其中提取“P”标签丢失。
任何指针都非常感谢它!
试试这个,它使用超前,使得LI不是选择的一部分。
(?<=<li>)(.*?<p/?>.*?)(?=</li>)
P.S.你还需要修正你的HTML,因为你有P标签的方式是不正确的。正则表达式适用于下面的HTML。
<ul><li><p>test1<p/></li><li><p>test2<p/></li></ul>
谢谢詹姆斯!你和pinda是好的!非常感谢! – Liming 2010-03-05 22:50:21
<li>(.*?<p/?>.*?)</li>
将匹配<li>
之间的所有内容也包含一个<p/>
。如果你只是想匹配<p/>
则:
(?<=<li>).*?(<p/?>).*?(?=</li>)
将有1场比赛中<p/>
标签。
你和詹姆斯是Regx Nija!非常感谢 – Liming 2010-03-05 22:49:36
使用HTML解析器而不是正则表达式更可靠。使用HTML Agility Pack:
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml("<p/><ul><li>test1<p/></li><li>test2<p/></li></ul><p/>");
IEnumerable<HtmlNode> result = doc.DocumentNode
.Descendants("li")
.SelectMany(x => x.Descendants("p"));
感谢标记。实际上,我从一堆文本中解析出bbcode,在转换bbcode的最后一次迭代之后,文本出现了,所以我需要做一些清理工作。但是,谢谢你的建议。 – Liming 2010-03-05 22:51:53
http://*.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags – 2010-03-05 22:29:18
解析HTML使用HTML解析器。 HTML不是“常规语言”,因此无法用正则表达式正确解析。 – 2010-03-05 22:31:49