繁体   English   中英

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

[英]need a regex for multiple similar strings

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

  • 字符串 1: url(/image/picture/name.jpg)
  • 字符串 2: url("/image/picture/name.jpg")
  • 字符串 3: url('/image/picture/name.jpg')

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

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

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

这将抓住你提到的情况,虽然它有点贵:

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

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

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

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

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

尝试这个:

url(("|')?/image/picture/name.jpg("|')?)

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

正则表达式 re = new Regex(@"/([az/.])*", RegexOptions.IgnoreCase);

尝试这个:

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

确切的 url 可以在名为"url"的组中匹配

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM