如何在Ruby中将正则表达式的一部分捕获到变量中?

绿三角

我知道"string"[/regex/],它返回匹配的字符串部分。但是,如果我只想返回字符串捕获部分,该怎么办?

我有绳子"1952-FEB-21_70_The_Case_of_the_Gold_Ring.mp3"我想title将文本存储在变量The_Case_of_the_Gold_Ring

我可以用正则表达式捕获这部分/\d_(?!.*\d_)(.*).mp3$/i但是写Ruby"1952-FEB-21_70_The_Case_of_the_Gold_Ring.mp3"[/\d_(?!.*\d_)(.*).mp3$/i]返回0_The_Case_of_the_Gold_Ring.mp3的不是我想要的。

我可以通过写得到我想要的

"1952-FEB-21_70_The_Case_of_the_Gold_Ring.mp3" =~ /\d_(?!.*\d_)(.*).mp3$/i
title = $~.captures[0]

但这似乎草率。当然有适当的方法可以做到这一点吗?

(我知道有人可能可以编写一个更简单的正则表达式来定位我想要的文本,从而使该"string"[/regex/]方法起作用,但这只是说明问题的一个示例,特定的正则表达式不是问题。)

绿色的

您可以将零件编号传递给[/regexp/, index]方法:

=> string = "1952-FEB-21_70_The_Case_of_the_Gold_Ring.mp3"
=> string[/\d_(?!.*\d_)(.*).mp3$/i, 1]
=> "The_Case_of_the_Gold_Ring"
=> string[/\d_(?!.*\d_)(.*).mp3$/i, 0]
=> "0_The_Case_of_the_Gold_Ring.mp3"

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在PowerShell中将变量用作正则表达式的一部分?

如何在正则表达式中否定类的一部分?

如何在bash中将字符串的一部分与正则表达式匹配?

正则表达式,用于捕获字符串的一部分

正则表达式中第二个捕获组的一部分

如何使用正则表达式跳过String的一部分?

如何使用正则表达式删除文本的这一部分?

如何仅替换以下正则表达式(JavaScript)的一部分?

如何使用grep排除正则表达式的一部分

如何使正则表达式的一部分可选?

正则表达式,用于标识javascript中URL的一部分

python正则表达式中字符类的一部分除外

在replaceAll调用中修改正则表达式的一部分

停止正则表达式匹配单词中单词的一部分

如何在 bash shell 中使用查找结果作为正则表达式的一部分

如何在 Python 中使用正则表达式删除 URL 的一部分?

如何使用正则表达式从 URL 中获取最后一部分?

如何使用正则表达式在Java中处理字符串的一部分

如何获取与SQL Server中的正则表达式匹配的字符串的一部分

Notepad ++中的正则表达式:如何获取URL的最后一部分?

如何使用正则表达式选择字符串的一部分并将其放入 Powershell 中的变量中

如何在替换中将正则表达式中匹配文本的一部分用于 Sublime Text?

如何在我的正则表达式中不包含文本字符串的第一部分?

Java 正则表达式忽略/注释掉正则表达式的一部分

如何捕获正则表达式的一部分但在 javascript 中有一些要求?

如何检查是否有多个正则表达式的字符串fullfil并捕获匹配的那一部分?

加号(+)是基本正则表达式的一部分吗?

正则表达式选择字符串的一部分

使用正则表达式替换字符串的一部分