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

Regex lookahead continue looking on each line

我需要在字符串中找到 URL。不只是第一个,而是字符串或文件中的任何 URL。并忽略正则表达式替换查询中的 URL。我正在使用前瞻来定位任何后跟 http 的文本。但是无法弄清楚如何在第一个 http 之后继续进行前瞻。

正则表达式 .*(?=(http)) 将查找字符串中第一个 http 之前的所有文本,但如何让它重复直到字符串结尾。以及如何让它在 URL.

匹配后继续

更新: 在文中: Lorem Ipsum 只是印刷和排版行业的虚拟文本。 Lorem Ipsum 已经是 abc http://www.cnn.com:the:2:3 the industry's standard dummy text ever since the 1500s, when an unknown printer abc http://www.cnn.com:the:1 拿了一个活字样,然后把它打乱成一本活字样书

这里我试图跳过所有 url 并替换例如"the" 与“123”。但不在 URL.

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

http://\S*|(?:(?!http).)*

.. 或几乎符合预期。它将输入文本拆分为多个匹配项,并将所有 "http\S" 放在不同的组中。但它不会像 (*SKIP)(*F) pcre flavor 那样跳过 http。

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

http://\S*|((?:(?!http).)*)

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

的匹配项