我需要一個正則表達式來捕獲下面3個相似字符串的相對路徑/image/picture/name.jpg。我嘗試了很多方法,但是我的正則表達式代碼中存在一些漏洞,導致它不一致地工作。我無法找到針對此特定問題的完美解決方案。任何幫助是極大的讚賞。需要一個正則表達式來處理多個相似的字符串
- 串1:網址(/image/picture/name.jpg)
- 串2:URL( 「/圖像/圖片/ name.jpg」)
- 串3:URL('/圖像/picture/name.jpg ')
我需要一個正則表達式來捕獲下面3個相似字符串的相對路徑/image/picture/name.jpg。我嘗試了很多方法,但是我的正則表達式代碼中存在一些漏洞,導致它不一致地工作。我無法找到針對此特定問題的完美解決方案。任何幫助是極大的讚賞。需要一個正則表達式來處理多個相似的字符串
試試這個:
URL((「|'?)/圖像/圖片/ name.jpg(」|「))
這會捕捉到url(「foo」)錯誤「)'如果使用back-reference,將會+1,儘管這還不完美。 – 2011-05-03 19:58:57
如果我?正確理解你,你想要一切括號但不包括以下語句應該包括在內。它當然不會接受數字等,但會從遇到的第一個斜槓返回,直到最後一個字符不是斜線或字母。 Regex re = new Regex(@「/([a-z /.])*」,RegexOptions.IgnoreCase);}}
這應該捕捉到URL組1:
url\(((?:"|')?)([a-z/\.]*?)\1\)
它也將捕獲任何網址標籤的括號內其他看起來像一個URL,但是是好的,具體的情況...
這會抓住url(「foo」)錯誤「)'如果使用back-reference,將會+1,儘管這仍然不完美。 – 2011-05-03 20:00:27
修復它,並添加回參考:) – 2011-05-03 20:46:21
這會抓住你所提到的情況下,雖然它是偏貴了一點:
(?ix-:url\(\s*
(?:
(?<url>[^\)'"][^\)]*[^\)\s]) |
(?:'(?<url>[^']*)') |
(?:"(?<url>[^"]*)")
)\s*
\))
相反我會使用以下命令,然後測試和手工修剪報價:
url\(\s*(?<url>[^)'"][^\)]*[^\)\s])\s*\)
向下側到後來的表達是,它不能正確處理所引用的右括號「)」的字符,如以下例子:
String: url('/images/logo Copy(2).jpg')
嘗試這種情況:
url\(['"]?(?<url>[^'")])['"]?\)
確切的URL可以在組中匹配"url"
有沒有完美的解決方案,這個使用正則表達式(不包括帶有遞歸/反向引用/代碼表達式的「正則表達式」,甚至在上下文中也有爭議)。下面的一些答案「將起作用」,但請記住它只是通過提供的有限測試數據。 – 2011-05-03 20:01:06