2012-08-06 35 views
1

我有一個簡單的正則表達式線從圖片中提取標籤中的src =「」值匹配SRC:ColdFusion的正則表達式用單引號

<cfset variables.attrSrc = REMatch("(?i)src\s*=\s*""[^""]+", variables.myImageTag) /> 

<!--- REMatch("(?i)src\s*=\s*""[^""]+" ---> 

然而,儘管這個偉大的工程,它不會出現使用src =''attrubutes顯示單引號而不是double。

理想情況下,我希望它能同時使用單引號和雙引號。

有什麼想法?

謝謝, 邁克爾。

+0

圖像標籤字符串從哪裏來?即如果你有'src = filename.png'或'altsrc =「...」'或'data-src =「...」',會發生什麼?如果你不完全控制輸入,你應該使用HTML解析器(例如[jsoup](http://jsoup.org))來處理這個問題,而不是正則表達式。 – 2012-08-06 23:49:46

+0

好主意。我在共享主機上 - 這是我可以自己安裝還是需要任何低級別訪問?我根本不懂Java。 – 2012-08-08 09:16:23

+0

取決於共享主機以及它們是否啓用了Java - 在Railo上,您可以將JAR文件放在同一目錄中並執行'createObject('java','org.jsoup.Jsoup','。/ jsoup-1.6.3 .jar')' - 如果這樣的話可以使用。 – 2012-08-08 11:25:42

回答

2
(?i)src\s*=\s*(""[^""]+""|'[^']+') 
+0

這實際上會導致CFML上下文中出現語法錯誤。也許有人在某處引用太多引號? – 2012-08-06 16:27:29

+0

我添加了另一個雙引號以逃避其中一個導致問題的引號。對於任何想知道的人來說,它應該是:(?i)src \ s * = \ s *(「」[^'「] +'」|'[^'] +')...所以在CFML中, REMatch(「(?i)src \ s * = \ s *(」「[^'」] +「」|'[^'] +')「,variables.myImageTag) – 2012-08-06 16:46:22

+0

@MichaelGiovanniPumo - 抱歉。忘了逃避那一個。 – 2012-08-06 17:46:51