C# 为什么这个正则表达式没有捕获任何东西?
我知道,我应该使用htmlAgilityPack-但在我的情况下,我没有任何机会。。。悲伤但真实。。。 我们有以下正则表达式: 以及以下示例输入:C# 为什么这个正则表达式没有捕获任何东西?,c#,regex,C#,Regex,我知道,我应该使用htmlAgilityPack-但在我的情况下,我没有任何机会。。。悲伤但真实。。。 我们有以下正则表达式: 以及以下示例输入: <A href=" http://dummy.domain/dummy.html " target="_blank"><b><font face="Arial" color="#0000FF" size="2"> Dummy text </font></b></a> 如果我删除
<A href="
http://dummy.domain/dummy.html
" target="_blank"><b><font face="Arial" color="#0000FF" size="2">
Dummy text
</font></b></a>
如果我删除组内的换行符,一切正常。我在.NETC上运行这个带有忽略大小写选项的程序
是的。没有捕获任何\r\n东西?我猜您放置管道符号是为了表示或在字符类中。如果是这样,请删除管道,[]表示或其任何成员 另外,请记住,HTML中的任何位置都有可能\n和。不会捕获它将捕获的字符\r\n 要匹配换行符,您需要使用SingleLine选项,或者更改。替换为[.\n]或[\s\s]以代替普通。。下面是一个内联指定单线模式的示例:
(?s)<a(.+?)(href=["'](.+?)["'])([^>]*)>(.+?)</a>
还要注意这里使用的[^>]*比使用非贪婪匹配要简单一些。如果我没有弄错的话,这个。匹配除换行符以外的任何字符。如果您只是尝试选择标记之间的所有内容,请尝试以下操作
<a\b[^>]*>([\s\S.]*?)</a>
@约翰:你应该为接受而回答这个问题,或者加入我的讨论:嗯,事实上是这样的。。。正则表达式是正确的,但我必须使用单线选项来捕捉\n…没错!我的错。编辑后包含了空格和空格的详细信息。事实上,我猜是这样的。。。如果您添加了一个解决方案,我想勾选您的答案为正确!实际上,我并没有在这里做一个愚蠢的选择:。。。这些团体需要保持现状。sry…需要注意的一点是,[\s\s]的执行时间与相比非常糟糕它很难看,\S=选择除空白之外的所有内容\S=空白,从内存中丢失,因此可能不是最佳选择,但它确实抓住了所有内容: