C# 正则表达式不';不能与.NET一起使用,但可以与其他正则表达式实现一起使用

C# 正则表达式不';不能与.NET一起使用,但可以与其他正则表达式实现一起使用,c#,html,.net,regex,C#,Html,.net,Regex,我正在尝试匹配如下所示的字符串: <a href="http://www.google.com"> http://www.google.com </a> (?<!["'>]\b*)((https?://)([A-Za-z0-9_=%&@?./-]+))\b http://www.google.com 但如果它发生在这样的大背景下,则不会发生: <a href="http://www.google.com"> http://www.go

我正在尝试匹配如下所示的字符串:

<a href="http://www.google.com"> http://www.google.com </a>
(?<!["'>]\b*)((https?://)([A-Za-z0-9_=%&@?./-]+))\b
http://www.google.com
但如果它发生在这样的大背景下,则不会发生:

<a href="http://www.google.com"> http://www.google.com </a>
(?<!["'>]\b*)((https?://)([A-Za-z0-9_=%&@?./-]+))\b
但它与该字符串不匹配(请注意额外的空格):



关于我做错了什么或如何解决这个问题,有什么想法吗?

我一直在等一位最初回答这个问题的人把答案放在这里,但既然他们没有,我就把它放进去

我不确定到底出了什么问题,但事实证明,在.NET中,我需要将
\b*
替换为
\s*
\s*
似乎不适用于其他正则表达式引擎(我只做了一点测试),但它确实适用于.NET。我在
\b
周围阅读的文档会让我相信它也应该匹配单词前面的空格,但可能我误解了,或者可能在捕获方面存在一些奇怪之处,不同的引擎处理不同

无论如何,这是我最后的正则表达式:

(?<!["'>]\s*)((https?:\/\/)([A-Za-z0-9_=%&@\?\.\/\-]+))\b

(?您的regexr链接中没有替换或匹配…您不应该在单词边界上放置量词。在.NET中(这里我想到的是C),您必须用双引号转义双引号,以便
变成
”“
@Jerry-是的,我正在用我实际的C代码编辑完成所有这些。我记得使用了一些RE工具,他们有一个选项来选择执行RE的引擎。有一个.Net引擎,因为它以不同的方式执行了RE。@SoMoS-同意,他们显然是这样做的。我在上对它进行了测试,结果显示它在PHP下工作,但失败了(就像我自己的测试一样)在.NET下。@KenSmith
\b
匹配一个位置而不是一个字符。如果你想断言
[“>]
http
的左边没有
,但忽略中间的空白,那么
\s*
就是最好的选择。如果这是你想要的,我可以投票取消删除答案(我认为该建议已被删除,因为我指出该建议背后的理由是不正确的)
(?<!["'>]\s*)((https?:\/\/)([A-Za-z0-9_=%&@\?\.\/\-]+))\b