2014-11-21 160 views
0

我是新来的语言。正则表达式匹配红宝石

我试图提取所有字符,直到转义字符(\ r)。

我试图

text = "abcde\r" 

text.match(/(.*)(\r)/) 

我试着用GSUB和GSUB一样!没有任何工作。

+0

哪里是你的代码的其余部分? – NullUserException 2014-11-21 18:45:12

+0

'\ r'不是“*转义字符”,它是“*一个*转义字符”。术语很重要。 – 2014-11-21 20:58:23

回答

0

您可以使用String#slice传递正则表达式和匹配来获取。 1代表第一个(在这种情况下是唯一的)比赛。

text = "abcde\r" 
text.slice(/(.*)\r/, 1) 
=> "abcde" 
+0

谢谢!看起来我对irb终端有问题。它没有打印输出。 – JmG 2014-11-21 18:48:09

2

如果你碰巧处理从一个文件中的指定的情况下,你要删除的行结束,您可以使用chopchomp。例如:

require 'pp' 

lines = [ 
    "hello", 
    "there\r", 
    "how\r\n", 
    "are you?" 
] 

lines.each do |line| 
    pp line 
    pp line.chomp 
    puts '---' 
end 

结果:

"hello" 
"hello" 
--- 
"there\r" 
"there" 
--- 
"how\r\n" 
"how" 
--- 
"are you?" 
"are you?" 
--- 
+0

小心使用'chop',因为它会不加区分地删除最后一个字符:''foo'.chop#=>“fo”'。 'rstrip'和'chomp'都是最常用的方法。 – 2014-11-21 21:00:57

+0

很酷。谢谢。这很有帮助 – JmG 2014-11-21 21:40:16