使用ruby正则表达式

时间:2017-06-28 17:44:06

标签: ruby regex

我对Ruby完全陌生,所以我只是想知道是否有人可以帮助我。

我有以下字符串:

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

为了获得中心部分OR-J8U,我必须编写什么样的正则表达式?

2 个答案:

答案 0 :(得分:2)

使用以下内容:

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

使用lookahead和lookbehinds

捕获打开和关闭'key'标签之间的任何内容

答案 1 :(得分:1)

如果你想获得字符串OR-J8U,那么你可以在正则表达式中使用该字符串;必须转义-字符:

/OR\-J8U/

但是,我相信你想要<planKey><key></key></planKey>中包含的任何字符串。在这种情况下,如果您允许空字符串,则ice的答案很有用:

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

如果您不允许空字符串,请将*替换为+

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

如果您更喜欢更通用的方法(任何标签中包含的任何字符串),那么我认为常见的意见不是使用正则表达式。而是考虑使用HTML解析器。在这方面你可以找到一些问题和答案。