ruby 正则表达式 : match alternative expressions with quotes

标签 ruby regex

在 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/

相关文章:

ruby - 两个表之间的后续one_to_one关系失败

javascript - 帮助使用正则表达式

c# - 具有流畅验证 ASP.NET Core WebApi 的正则表达式验证

java - 如何找到仅由单词中给定字符集组成的单词

javascript - Rails 递归地包含 javascripts Assets 文件夹

ruby-on-rails - 无方法错误 : undefined method `email' for nil:NilClass : can't send email with devise/sendgrid(Rails 3. 2)

mysql - 独立脚本报告 "MySQL server has gone away"; my.cnf 有问题吗?

ruby-on-rails - 在 Rails 中使模型不可删除

python - [a-zA-Z] Python 正则表达式模式可以匹配和替换非 ASCII Unicode 字符吗?

javascript - 为什么 `contenteditable` 正则表达式没有按预期工作?