Regex查找c#net中特定案例的href from anchore标记

Regex查找c#net中特定案例的href from anchore标记,c#,.net,regex,C#,.net,Regex,我有一些特定的情况,正则表达式不适合 例子 1. <a href="abnvb/m'hhjhh/js jmm" hbbnb="bbn">bhjbhj</a>-----containing quote(') in between " " and having space in between 2. <a href="vvvbg" jhhbhh="tyrty">gffgd</a> 3. <a href=**abyuyyuub

我有一些特定的情况,正则表达式不适合

例子

  1.  <a href="abnvb/m'hhjhh/js   jmm" hbbnb="bbn">bhjbhj</a>-----containing quote(') in between " " and having space in between
  2.  <a href="vvvbg" jhhbhh="tyrty">gffgd</a>
  3.  <a href=**abyuyyuub/m'hhjhh/js jmm**    hbbnb="bbn">bhjbhj</a>----without quotes having space

此外,我还想知道如何匹配第一次出现,即如何匹配第一个双引号(“)、单引号(”)或空格

如果您坚持让特定正则表达式满足所有三个示例,那么您应该在第二个捕获组内的非捕获组中添加一个
\s
to
[^\1\s |>]
,导致:

<a\s+[^>]*\s*href\s*=('|"|)\s*((?:[^\1\s|>]|[\n\r])+)(\1)[ |>][^>]*?>(.*?)</a>


总的来说,用这种方式解析URL当然是一个“坏主意”(tm),正如前面在评论中提到的那样。

不要试图用Regex解析整个标记,只需提取href并使用Uri.TryParse解析即可
abyuyyuub/m'hhjhh/js jmm but it should be
abyuyyuub/m'hhjhh/js
<a\s+[^>]*\s*href\s*=('|"|)\s*((?:[^\1\s|>]|[\n\r])+)(\1)[ |>][^>]*?>(.*?)</a>