在 Ruby 中,我想要一个正则表达式匹配两个表达式中的任何一个,结果中只有一个组。我想要以下结果:
regex = /you tell me/
regex.match(%|My name is "Peter"|)[1]
=> "Peter"
regex.match(%|My name is 'Peter'|)[1]
=> "Peter"
请注意,我希望第 1 组仅引用 Peter
,不带引号,并且我希望在任何一种情况下都恰好匹配一组。举个例子,这将匹配第一种情况(仅):
/^My name is "([^"]*)"$/
我想要类似的东西。我碰巧用它来测试 cucumber 。
最佳答案
This regex可能对你有用
['"](\w+)['"]
它恰好匹配一组。但它也允许不平衡的引号,比如 'Peter"
如果你只想匹配平衡的引号,那么你不能用一个组来做(恐怕)。
无论如何,here's my take :
('|")(\w+)\1
它匹配两组,“Peter”在第二组。
关于 ruby 正则表达式 : match alternative expressions with quotes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9072266/