如何使用Regexp找到包含/(正斜杠)或\(反斜杠)或两者的字符串?
实施例。我有以下数组['ABC', 'abc/sd', dsa\adf', as/\sfd', ball, cat]
然后它将只返回包含斜杠的字符串。
答案 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#grep
比Enuberable#select
更紧凑。答案 2 :(得分:-1)
我不是一个红宝石程序员,但你不应该使用正则表达式来执行这样简单的任务,因为正则表达式是资源匮乏。每种语言都提供了在另一种语言中查找字符串的功能。有时它被称为instr,instring或者其他......你正在寻找的是
rindex(substring [,fixnum])
返回str中给定子字符串或模式(regexp)最后一次出现的索引。
“你好”.rindex('a')#=>零
如果你得到nil,你的字符串“a”就找不到。