SB2*_*055 4 .net c# regex vb.net
我有以下几点:
Regex urlRx = new Regex(@"((https?|ftp|file)\://|www.)[A-Za-z0-9\.\-]+(/[A-Za-z0-9\?\#\&\=;\+!'\(\)\*\-\._~%]*)*", RegexOptions.IgnoreCase);
Run Code Online (Sandbox Code Playgroud)
这符合所有的网址,但我想,以排除那些用字符之前"或'。我一直在尝试使用其他解决方案来实现此目的(正则表达式排除[除非带有\,否则除外),但一直无法通过它。
如果我有这个:
The brown fox www.google.com
Run Code Online (Sandbox Code Playgroud)
我应该有个比赛。但是如果我有这个:
The brown fox <a href="www.google.com">boo</a>
Run Code Online (Sandbox Code Playgroud)
由于,我不该比赛"。如何做到这一点?
您需要后面有一个否定的字眼:将正则表达式前缀为(?<!["'])。
说明:
(?<!...)装置:直接的东西前述当前位置必须不匹配...。["'] 只是一个字符组,其中包含要排除的两个字符。注意:在@"..."字符串中,双倍qoutes通过加倍转义,因此代码将显示为:
Regex urlRx = new Regex(@"(?<![""'])((https?|ftp|file)...
Run Code Online (Sandbox Code Playgroud)
在VB中:
Dim urlRx As New Regex("(?<![""'])((https?|ftp|file)...
Run Code Online (Sandbox Code Playgroud)