使用正则表达式检查字符串是否包含/(正斜杠)或\(反斜杠)

时间:2016-11-03 10:41:07

标签: ruby ruby-on-rails-3

如何使用Regexp找到包含/(正斜杠)或\(反斜杠)或两者的字符串?

实施例。我有以下数组['ABC', 'abc/sd', dsa\adf', as/\sfd', ball, cat]

然后它将只返回包含斜杠的字符串。

3 个答案:

答案 0 :(得分:2)

你必须在正则表达式中逃脱它们。尝试

a = ['ABC', 'abc/sd', 'dsa\adf', 'as/\sfd', 'ball', 'cat']
a.select { |s| s.match(/[\/\\]/) }
 => ["abc/sd", "dsa\\adf", "as/\\sfd"] 

答案 1 :(得分:1)

可以通过使用带有正则表达式参数的Enumerable#grep来实现:

arr = ['ABC', 'abc/sd', 'dsa\adf', 'as/\sfd', 'ball', 'cat']
regex = %r{[\\/]}
arr.grep(regex)
=> ["abc/sd", "dsa\\adf", "as/\\sfd"]
  • 使用%r()表示法可以omit escaping slash /
  • 使用Enumerable#grepEnuberable#select更紧凑。

答案 2 :(得分:-1)

我不是一个红宝石程序员,但你不应该使用正则表达式来执行这样简单的任务,因为正则表达式是资源匮乏。每种语言都提供了在另一种语言中查找字符串的功能。有时它被称为instr,instring或者其他......你正在寻找的是

rindex(substring [,fixnum])

返回str中给定子字符串或模式(regexp)最后一次出现的索引。

“你好”.rindex('a')#=>零

如果你得到nil,你的字符串“a”就找不到。