2012-07-12 102 views
0

我想寫一個正則表達式來查找XML的一個長串的選擇,並拉出找到一個標籤的第一個實例。正則表達式匹配只有第一個標籤

我當前的代碼(其中拿出每場比賽):(<action>(.*?)</action>)

示例代碼:

<request guid="58004a1e-0c32-4002-a101-59fc28af5836"> 
<action>Sample/Action</action><date>"7/12/12"</date> 

我已經用多種方式我發現無論是匹配的第一個實例,否則不顧一切嘗試,檢查並確保當前匹配之前沒有匹配,將其設置爲完全匹配一個等,但它們都會返回兩個匹配項。我無法設置正則表達式來查找特定的前導或尾隨標籤,因爲這些標籤可以更改。

+3

你爲什麼不使用XML解析器代替正則表達式? – 2012-07-12 15:43:36

+0

你寫道,你可以得到*所​​有*匹配,那麼它應該很容易得到第一個? – dacwe 2012-07-12 15:49:00

+0

聽起來像你需要重新考慮你的數據結構/解析。現在更好地實現它,而不是在意識到它不適合您不斷變化的需求時將其修正。 – Phil 2012-07-12 15:53:18

回答

1

答案很簡單:停止。

你問錯了問題,因爲你已經決定你要使用正則表達式工作了正則表達式是否爲您解決問題的適當方法之前,解決你的問題。

C#和Java都有XML解析庫,而且使用其中一種方法會更好,而不是試圖使用正則表達式來複制它們的功能,這是一般不可能完成的任務,因爲XML不是常規語言。

this answer看出,雖然這個問題是關於HTML。

+0

問題在於我沒有將這個應用程序用於我正在編寫的應用程序,我將它用於另一個運行在java中的公司的應用程序,我唯一能做的就是將它傳遞給正則表達式字符串。我曾假設沒有現實的方法來做到這一點,但我仍然想研究它,只是爲了確保。 – wgallon 2012-07-12 15:56:37

+1

@BillyGallon傳遞一個正則表達式來選擇整個XML並對結果運行一個XPath查詢。從當前正則表達式返回的集合中選擇第一個匹配也不難。 – toniedzwiedz 2012-07-12 15:59:05

相關問題