如何编写正则表达式以同时匹配和捕获?

时间:2013-07-12 20:45:14

标签: ruby

我有一个伪代码方法,其工作原理如下:

def my_method(file)
  while(line = file.gets)
    case line
      when /^TEXT (.*)/
        puts line + <the text captured in the parenthesis of the regex> 
      else
        .....
    end
  end
end

有没有办法做到这一点?

编辑:

示例字符串如下:

TEXT a sample text

我希望正则表达式捕获“示例文本”。我知道这不是正确的方法,但这只是一个演示,即“YYYY-MM-DD format date in shell script”来弄清楚如何以任何你想要的格式获取日期。

昨天的日期可以找到:

date -d '1 day ago' +'%Y/%m/%d'

来自“How To Get Yesterday’s Date using BASH Shell Scripting”。

/替换为-_,然后将其传递给Ruby语句。

编辑:为另一个人投票。他们的答案实际上有代码。

1 个答案:

答案 0 :(得分:4)

您要找的是puts "line#{$1}"。伪全局$1$2$3等指的是最后一个Regexp匹配的捕获组。 (并$~指的是MatchData本身,如果您愿意使用它。)