当前位置:编程学习 > C#/ASP.NET >>

求正则表达式匹配非链接(非<>)

字符串中包含html,要求能匹配所有非链接(非<>)的部分.
如:“<p>工业<a href="#">自动化</a>专业课程安排如图2<img src="#" alt="工业自动化"/>,如有变动,另行通知!<span><a href="#">机电学院</a></span>考试课成绩>80分的学生可选修第二专业。</p>”
期待匹配的结果是:

<p>工业
专业课程安排如图2
,如有变动,另行通知!<span>
</span>考试课成绩>80分的学生可选修第二专业。

其中大于号(>)可能会干扰正则表达式对围堵标记(<>)的识别。 --------------------编程问答-------------------- try:
(?is)<(a|img)[^]*?>(.*?</\1>)?

string source="你的html源码";
source=source.Replace(source,@"(?is)<(a|img)[^]*?>(.*?</\1>)?",""); --------------------编程问答-------------------- 谢谢Chinajiyong ,正则有点问题,
提示:正在分析“(?is)<(a|img)[^]*?>(.*?</\1>)?”- 未终止的 [] 集 --------------------编程问答--------------------
 string str = File.ReadAllText("D:\\1.txt", Encoding.Default);
            str = Regex.Replace(str, @"(?is)<a[^>]*>.*?</a>|<img[^>]+>", "\r\n"); 
           
--------------------编程问答-------------------- 谢谢hjywyj,匹配a标签和img标签很管用,如何转换成匹配非a标签和img标签呢? --------------------编程问答--------------------
引用 4 楼 yerencao 的回复:
谢谢hjywyj,匹配a标签和img标签很管用,如何转换成匹配非a标签和img标签呢?


string source="你的html源码";
source=source.Replace(source,@"(?is)<(a|img)[^>]*?>(.*?</\1>)?",""); --------------------编程问答--------------------
引用 5 楼 Chinajiyong 的回复:
string source="你的html源码";
source=source.Replace(source,@"(?is)<(a|img)[^>]*?>(.*?</\1>)?","");

匹配a标签和img标签很管用,如何转换成匹配非a标签和img标签的正则呢? --------------------编程问答-------------------- 有个参考的正则可以基本满足条件:(?in)[^<>]+(?=(<(?!/a)[^<>]*>[^<>]*)*(<a\b|$))
就是有个缺陷,遇到字符串中有大于号(>)或者小于号(<)就会出错。
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,