2010-06-15 208 views
4

正則表達式會從此原始標記返回'details.jsp'(不含引號!)會怎樣?我可以很容易地匹配value =「details.jsp」的所有內容,但是在匹配屬性內的內容時遇到了麻煩。正則表達式匹配屬性值

<s:include value="details.jsp" />

任何幫助非常感謝!

感謝

勞倫斯

+6

不要使用REGEX來解析XML/HTML。爲此使用XML解析器。其次,你可以發佈你的正則表達式不起作用嗎? – ircmaxell 2010-06-15 15:05:36

+0

看到相關答案: http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 – huitseeker 2010-07-07 10:40:34

回答

5

/value=["']([^'"]+)/將使 「details.jsp」 第一個捕獲小組。

編輯:

針對ircmaxell的評論,如果你真的需要它,下面的表達式更加靈活:

/value=(['"])(.+)\1/

它會匹配<s:include value="something['else']">的事情,但只要注意該值將被放置在第二個捕獲組中。

但正如前面提到的,正則表達式不是你想用於解析XML的東西(除非它是一個非常簡單的情況),所以當你應該使用解析器時,不要花費太多時間在複雜的正則表達式上。

+0

我認爲你需要添加一個'[「 ']''' – 2010-06-15 15:06:15

+1

雖然不會因爲添加它而傷害,但是[['']'不需要,因爲'[['''] +)'匹配(並捕獲)所有字符直到' ''或'''然後停下來,它會匹配upto但不包括結尾報價。 – mikej 2010-06-15 15:08:14

+0

這是完全有效的XML,但是正則表達式只會捕獲某些東西['。你需要一個反向引用來區分... – ircmaxell 2010-06-15 15:15:31