正则表达式前瞻继续寻找每一行

时间:2015-08-07 07:43:55

标签: regex regex-lookarounds

我需要在字符串中找到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"。但不在网址内。

1 个答案:

答案 0 :(得分:0)

Jonny的评论是正确的! :)这个正则表达式完成了这项工作!

  

的http:// \ S * |:*

((HTTP)?!)。

..或几乎按预期进行。它将输入文本拆分为匹配项,并将所有“http \ S”放在不同的组中。但它不会跳过像(* SKIP)(* F)pcre风味可以的http。

更新:找到了一个适用于.NET的解决方案。使用匹配组并检查第二组是否有任何数据。

  

的http:// \ S * |((?:?!(HTTP))*)

在最后一个正则表达式组中使用(..)我们可以使用match.Groups。并且!string.IsNullOrEmpty(group [1] .Value)只获取不包含URL的匹配。