Ruby正则表达式:使用引号匹配替代表达式

时间:2012-01-30 23:17:27

标签: ruby regex

在Ruby中,我希望在结果中使用单个组的两个表达式中的正则表达式匹配。我想要以下结果:

regex = /you tell me/
regex.match(%|My name is "Peter"|)[1]
=> "Peter"
regex.match(%|My name is 'Peter'|)[1]
=> "Peter"

请注意,我希望第一组仅引用Peter而没有引号,我希望在任何一种情况下都只有一个匹配的组。举个例子,这将匹配第一个案例(仅):

/^My name is "([^"]*)"$/

我想要类似的东西。我碰巧将它用于黄瓜测试。

2 个答案:

答案 0 :(得分:3)

This regex可能适合您

['"](\w+)['"]

它恰好匹配一个组。但它也允许不平衡的引号,如'Peter"

如果你只想匹配平衡报价,那么你就不能用一个组来做(我很害怕)。

无论如何,here's my take

('|")(\w+)\1

它匹配两组,“Peter”在第二组。

答案 1 :(得分:2)

http://rubular.com/r/C78X0wwGej

(?=['"](\w+)['"])(?:"\1"|'\1')