【发布时间】:2012-09-17 17:55:13
【问题描述】:
以下内容为我提供了一场比赛:
query = http://0.0.0.0:9393/review?first_name=aoeu&last_name=rar
find = /(?<=(\?|\&)).*?(?=(\&|\z))/.match(query)
当我检查“发现”时,我得到:
first_name=aoeu
我想匹配 '?' 之间的所有内容和一个'&',所以我尝试了
find = query.scan(/(?<=(\?|\&)).*?(?=(\&|\z))/)
但是当我检查“发现”时,我现在得到:
[["?", "&"], ["&", ""]]
我需要做什么才能获得:
[first_name=aoeu][last_name=rar]
或
["first_name=aoeu","last_name=rar"]
?
【问题讨论】:
-
我认为
Ruby不支持lookbehind(?<=(\?|\&)) -
我用
.net风格测试了你的表达,效果很好。 -
@sawa 真的吗?但是当我在我的
RegexBuddy 3.5.4上测试它时它失败了。 -
@JohnWoo 你用的是什么版本的 Ruby?