gpt4 book ai didi

c# - 排除以特定字符开头的正则表达式匹配

转载 作者:太空狗 更新时间:2023-10-30 00:49:01 25 4
gpt4 key购买 nike

我有以下内容:

Regex urlRx = new Regex(@"((https?|ftp|file)\://|www.)[A-Za-z0-9\.\-]+(/[A-Za-z0-9\?\#\&\=;\+!'\(\)\*\-\._~%]*)*", RegexOptions.IgnoreCase);

这匹配所有 URL,但我想排除那些以字符 "' 开头的 URL。我一直在尝试使用其他方法实现此目的解决方案 ( Regex to exclude [ unless preceded by \ ),但未能通过。

如果我有这个,我应该匹配:

The brown fox www.google.com

但是,如果我有这个:

The brown fox <a href="www.google.com">boo</a>

由于 ",我不应该得到匹配项。如何实现?

最佳答案

您需要一个负面回溯:在您的正则表达式前加上(?<!["']) 前缀.

解释:

  • (?<!...)意思是:当前位置之前的东西不能匹配... .
  • ["']只是一个包含您要排除的两个字符的字符组。

注:里面@"..."字符串,双引号通过将它们加倍来转义,因此您的代码将显示为:

Regex urlRx = new Regex(@"(?<![""'])((https?|ftp|file)...

在 VB 中:

Dim urlRx As New Regex("(?<![""'])((https?|ftp|file)...

关于c# - 排除以特定字符开头的正则表达式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41306058/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com