ruby - 如何进行 'or' 匹配但不捕获正则表达式中的 'or' 部分?

标签 ruby regex

我正在寻找可以匹配两个日期字符串的正则表达式。我在指定“或”表达式时遇到问题:/\d{4}-\d{2}-(XX|\d{2})/ 不起作用,因为它只返回XX部分:

"2007-01-XX 2008-01-01".scan(/\d{4}-\d{2}-XX/)
["2007-01-XX"]

"2007-01-XX 2008-01-01".scan(/\d{4}-\d{2}-\d{2}/)
["2008-01-01"]

最佳答案

使用 (?:...) 形式的非捕获组,而不是 (...) 形式的捕获组。所以:

"2007-01-XX 2008-01-01".scan(/\d{4}-\d{2}-(?:XX|\d{2})/)

关于ruby - 如何进行 'or' 匹配但不捕获正则表达式中的 'or' 部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9689450/

相关文章:

ruby-on-rails - 如何根据时间动态调用方法

ruby - 如果不修改,在迭代之间保留哈希排序?

ruby - Net::SSH gem non_interactive无效选项?

python - 在 Python 中查找字符串下方(以及字符串之间)的单词

RegEx 匹配尖括号之间的字符串并忽略换行符

mysql - 如何在 Rails 3.1.0 应用程序中访问多个数据库?

javascript - 错误数量的参数问题

java - 使用正则表达式在匹配字符串之前或末尾插入字符串

Java 不区分大小写的正则表达式

javascript - 如何在 JavaScript 中提取部分 location.href?