如何从xpath字符串中获取键/值

时间:2014-04-21 09:08:42

标签: ruby-on-rails regex string

我正在使用rails项目上的ruby,我有一个字符串

cmd = "\"//div/table/tbody/tr/td/label[text()=\"Select Year\"]/preceding-sibling::*[1]\" = \"2014\""

我希望获得这样的键/值:

key:   "//div/table/tbody/tr/td/label[text()=\"Select Year\"]/preceding-sibling::*[1]"
value: "2014"

密钥是xpath。我使用的是cmd.split(" ="),这是不正确的。我想我可以使用正则表达式解析字符串,但不知道如何。请指教。

提前谢谢!

2 个答案:

答案 0 :(得分:0)

使用split会对你有用。

2.1.1 :006 > cmd = '"//div/table/tbody/tr/td/label[text()=\"Select Year\"]/preceding-sibling::*[1]" = "2014"'
 => "\"//div/table/tbody/tr/td/label[text()=\\\"Select Year\\\"]/preceding-sibling::*[1]\" = \"2014\"" 
2.1.1 :007 > cmd.split(" = ")[0]
 => "\"//div/table/tbody/tr/td/label[text()=\\\"Select Year\\\"]/preceding-sibling::*[1]\"" 
2.1.1 :008 > cmd.split(" = ")[1]
 => "\"2014\"" 

将第一个保存为键,将第二个保存为值。

答案 1 :(得分:0)

现在,我得到了解决方案。见下文: 我原来的字符串:

a = "\"//div/table/tbody/tr/td/label[text()=\\\"Select Year\\\"]/preceding-sibling::*[1]\" = \"2014\""

我正在使用:

a.match('[\w\W]*\"[\s]*=')[0]

获取字符串:

"\"//div/table/tbody/tr/td/label[text()=\\\"Select Year\\\"]/preceding-sibling::*[1]\" ="

然后我可以使用substring来获取其余的字符串。