我需要在字符串中找到URL。不仅仅是字符串或文件中的第一个,而是任何URL。并忽略正则表达式替换查询中的URL。我使用前瞻来查找任何文本,然后是http。但无法弄清楚如何在第一个http之后继续前瞻。
正则表达式.*(?=(http))
将找到所有文本,直到字符串中的第一个http,但如何重复直到字符串结尾。如何在URL匹配后继续播放。
更新: 在文中: Lorem Ipsum只是印刷和排版行业的虚拟文本。自16世纪以来,Lorem Ipsum一直是行业标准虚拟文本的abc http://www.cnn.com:the:2:3,当时一个未知的打印机abc http://www.cnn.com:the:1拿了一个类型的厨房,并把它拼凑成一个类型的样本书
这里我试图跳过所有网址并替换例如"所述"用" 123"。但不在网址内。
答案 0 :(得分:0)
Jonny的评论是正确的! :)这个正则表达式完成了这项工作!
的http:// \ S * |:*
((HTTP)?!)。
..或几乎按预期进行。它将输入文本拆分为匹配项,并将所有“http \ S”放在不同的组中。但它不会跳过像(* SKIP)(* F)pcre风味可以的http。
更新:找到了一个适用于.NET的解决方案。使用匹配组并检查第二组是否有任何数据。
的http:// \ S * |((?:?!(HTTP))*)
在最后一个正则表达式组中使用(..)我们可以使用match.Groups。并且!string.IsNullOrEmpty(group [1] .Value)只获取不包含URL的匹配。