我知道,我应该使用htmlAgilityPack - 但就我而言,我没有任何机会......悲伤但真实......
我们有以下正则表达式:<a(.+?)(href=["|'](.+?)["|'])(.+?)>(.+?)</a>
以及样本输入:
<A href="
http://dummy.domain/dummy.html
" target="_blank"><b><font face="Arial" color="#0000FF" size="2">
Dummy text
</font></b></a>
如果我删除组内的换行符,一切正常。我在.net c#上使用ignore-case
- 选项运行。
.
没有捕获任何\r\n
- 事物吗?
答案 0 :(得分:1)
我猜你把管道符号放在字符类中表示“OR” - 如果是这种情况,删除管道,[]
暗示其任何成员的“OR”。
此外,请记住HTML中可能存在\n
的任何内容,并且“。”不会捕获这些字符(它会捕获\r
)。
要匹配换行符,您需要使用SingleLine选项,或将.
更改为替代[.\n]
或[\s\S]
等替代.
}}。以下是内联指定的单线模式的示例:
(?s)<a(.+?)(href=["'](.+?)["'])([^>]*)>(.+?)</a>
另请注意此处使用的[^>]*
,它比使用非贪婪的匹配更简单。
答案 1 :(得分:1)
如果您只是想在标签之间选择所有内容,请尝试使用
<a\b[^>]*>([\s\S.]*?)</a>
答案 2 :(得分:0)
如果我没弄错的话。匹配除换行符之外的任何字符。