需要一个用于多个相似字符串的正则表达式

时间:2011-05-03 19:40:45

标签: c#

我需要一个正则表达式来捕获以下3个类似字符串中的相对路径/image/picture/name.jpg。我尝试了很多方法但是我的正则表达式代码中存在一些漏洞,这使得它的工作方式不一致。对于这个具体问题,我找不到任何完美的解决方案。非常感谢任何帮助。

  • string 1:url(/image/picture/name.jpg)
  • string 2:url(“/ image / picture / name.jpg”)
  • string 3:url('/ image / picture / name.jpg')

5 个答案:

答案 0 :(得分:2)

这应该将URL捕获到组1中:

url\(((?:"|')?)([a-z/\.]*?)\1\)

它还会捕获URL标记的括号内的任何其他内容,这些内容看起来像一个URL但是很好并且特定于案例......

答案 1 :(得分:2)

这会抓住你提到的案例,虽然它有点昂贵的一面:

(?ix-:url\(\s*
(?:
  (?<url>[^\)'"][^\)]*[^\)\s]) |
  (?:'(?<url>[^']*)') |
  (?:"(?<url>[^"]*)")
)\s*
\))

相反,我会使用以下内容,然后手动测试和修剪引号:

url\(\s*(?<url>[^)'"][^\)]*[^\)\s])\s*\)

后面的表达式的缺点是它没有正确处理引用的右括号')'字符,如下例所示:

String: url( '/images/logo Copy(2).jpg' )

答案 2 :(得分:0)

试试这个:

URL(( “|')/图像/图片/ name.jpg(?” |')?)

答案 3 :(得分:0)

如果我理解正确并且你想要括号内的所有内容但不包括引号,则应该执行以下语句。它当然不会接受数字等,但会从遇到的第一个斜杠返回enything,直到最后一个字符不是斜杠或字母字符。

Regex re = new Regex(@“/([a-z /.])*”,RegexOptions.IgnoreCase);

答案 4 :(得分:0)

试试这个:

url\(['"]?(?<url>[^'")])['"]?\)

可以在名为"url"

的组中匹配确切的网址