0
我怎樣才能在整個文件獲取下面標記的價值屬性中的內容內容
<h:graphicImage .... value="*1.png*" ...../>
<h:graphicImage .... value="*2.png*" ....>...</h:graphicImage>
我的正則表達式搜索結果應導致成
- 1.png
- 2.png
所有我能找到的是爲MULT內容簡單的結尾標籤,但單個結束標籤又如何呢?
我怎樣才能在整個文件獲取下面標記的價值屬性中的內容內容
<h:graphicImage .... value="*1.png*" ...../>
<h:graphicImage .... value="*2.png*" ....>...</h:graphicImage>
我的正則表達式搜索結果應導致成
所有我能找到的是爲MULT內容簡單的結尾標籤,但單個結束標籤又如何呢?
相反,使用XML解析器,正則表達式無法真正地解析XML,除非您知道輸入始終會遵循特定的表單。
然而,這裏是一個正則表達式,你可以用它來提取h:graphicImage
標籤屬性的值,但後讀取的告誡:
<h:graphicImage[^>]+value="\*(.*?)\*"
和1.png
或2.png
將是第一個拍攝小組。
注意事項:
1.png
,2.png
等總是被星號包圍這是它從你的問題似乎(這是什麼\*
是)這如果其中一個屬性中有一個「>」字符的正則表達式會失敗,例如
<h:graphicImage foo=">" value="*1.png*"
這是我之前對正則表達式提到內華達州呃能夠正確解析XML。 您可以解決此通過調整你的正則表達式:
<h:graphicImage.+?+value="\*(.*?)\*"
但是,這意味着,如果你有<h:graphicImage /><foo value="*1.png*">
然後從foo
標籤1.png
提取出來,當你只想從graphicImage
標籤提取。 同樣,正則表達式將總是有極端案例以XML的問題,所以你需要根據你的應用程序(例如,如果你知道只有的graphicImage的標籤將永遠有一個「值」屬性進行調整,那麼第二種情況可能比第一種情況好)。
您不應該使用正則表達式來嘗試解析xml/html。這是爲什麼的經典答案:http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags#answer-1732454。用一個解析器代替,你可以避免幾個小時的時間把你的頭撞到奇怪的bug上。 – Robin