2017-06-28 46 views
-4

我對Ruby完全陌生,所以我只是想知道是否有人能幫助我。使用紅寶石的正則表達式

我有以下字符串:

"<planKey><key>OR-J8U</key></planKey>" 

什麼是正則表達式我必須寫得到的中心部分OR-J8U?

+0

該字符串是否包含'「'字符? – Elyasin

+2

一般來說,解析XML應該使用XML解析器來完成.Regex可以用於快速和骯髒的解決方案,但是請注意,它們可能會被其他有效的XML 。 –

+2

[不要使用正則表達式解析XML](https://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454)! –

回答

2

使用以下方法:使用先行

str = "<planKey><key>OR-J8U</key></planKey>" 
str[/(?<=\<key\>).*(?=\<\/key\>)/] 
#=> "OR-J8U" 

這捕獲任何東西在打開和關閉之間的「關鍵」的標籤和lookbehinds

1

如果你想要得到的字符串OR-J8U那麼你可以簡單地使用字符串在正則表達式中;該-字符來轉義:

/OR\-J8U/ 

雖然,我相信你想要的是內<planKey><key></key></planKey>封閉的任意字符串。

/(?<=\<key\>).*(?=\<\/key\>)/ 

如果不允許空字符串,則更換*+

/(?<=\<key\>).*(?=\<\/key\>)/ 

如果在這種情況下,冰的回答,如果你允許一個空字符串是非常有用的你更喜歡更通用的方法(任何標籤內的任何字符串),那麼我相信普遍的觀點是不使用正則表達式。請考慮使用HTML解析器。因此,你可以在這方面找到一些問題和答案。