2013-05-15 95 views
0

我有一個字符串"<wpf><xaml><wpf-controls>"。 我需要數組格式的標籤之間的字符串。 我如何得到這個?標籤之間的正則表達式字符串「<string>」

+1

你真的不想用正則表達式解析XML。使用像[Nokigiri]這樣的XML解析器(http://nokogiri.org/)或者一些專門的XAML庫。但是,請[不要用正則表達式解析XML](http://stackoverflow.com/a/1732454/421705)。 –

回答

2

這個問題的正則表達式是非常簡單的,它是:/<(.*?)>/

對於陣列的部分是將參考答案上how to use one line regular expression to get matched content

編輯: 的標籤使用的內部數組<wpf><xaml><wpf-controls>".scan(/(?:<(.*?)>)*/)

(?: ..)組標記在一起,*說,我們希望0或多個組:)

+0

」。掃描(/ <(.*?)> /) 我得到陣列的陣列,我只需要字符串 –

+0

在這種情況下使用'」的數組。掃描(/ (?:<(.*?)>)* /)'(?:..)將標籤分組在一起,*表示我們需要該組中的0個或更多:) – B8vrede

+0

http://rubular.com/是一種很好的工作方式正則表達式,你可以提供一個測試字符串,你可以在編輯它的時候嘗試你的正則表達式,對理解最新進展有很大的幫助。 – jethroo

0
'<wpf><xaml><wpf-controls>'.scan(/<(.*?)>/).map(&:first) 
+0

你能解釋一下你的答案嗎? – Stephan

+0

String#scan返回數組數組,如果你的正則表達式包含組。在這種情況下,只有一個組,因此結果數組將爲[[「wpf」],[「xaml」],[「wpf-controls」]]。所以首先通過Array#從每個子數組中獲取所有的字符串。 您也可以使用Array#flatten,但如果正則表達式中有多個組,我的解決方案也可以使用。 –

相關問題