正则表达式为c#.net中的特定情况的锚标记找到href

时间:2013-12-27 08:52:06

标签: 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/m'hhjhh/js jmm**    hbbnb="bbn">bhjbhj</a>----without quotes having space

我使用了来自here

的正则表达式

我的正则表达式如下

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

所以1和2工作正常但是3则给出了

abyuyyuub/m'hhjhh/js jmm but it should be
abyuyyuub/m'hhjhh/js

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

1 个答案:

答案 0 :(得分:0)

如果您坚持让特定的正则表达式满足所有三个示例 - 您应该在第二个捕获组内的非捕获组中的排除项中添加\s[^\1|>]到{{1}导致:

[^\1\s|>]

总体而言,以这种方式解析网址当然是一个“坏主意”(tm),正如之前在评论中所提到的那样。