使用任何方法从Ruby中的字符串中提取子字符串的快速方法



作为Ruby的初学者,如何从Ruby中的字符串中提取子字符串?

示例:

string1 = "1.1.67.01-f9@92a47088f49d095f0"

我想提取从开头到"-"的子字符串。因此子字符串为"1.1.67.01">

如果你能保证第一个-出现在你想要的子字符串后面,Ruby的字符串分割方法就是一个很好的选择。这看起来像:

string1.split('-')[0]

这个使用第一个-的索引来分割字符串(0是字符串的开头(:

substring = string1[0, string1.index("-")]

听起来像是一个快速而肮脏的正则表达式的工作。

string1 = "1.1.67.01-f9@92a47088f49d095f0"
/^([^-]*)-/ =~ string1
puts $1

让我们分解正则表达式

/^([^-]*)-/

/是正则表达式的引号,有点像"是字符串的引号。在正则表达式中,^标记字符串的开始,-是一个文字短划线(在本例中,它终止了我们的匹配(。然后我们有一个捕获组(...),这表明这是我们真正感兴趣的匹配部分。在内部,我们匹配任何不是短划线的字符([^-](,重复零次或多次(*(。

在成功匹配后,我们打印第一个(在本例中也是唯一一个(捕获组$1

最新更新