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

Check whether a string contains / (forward slash) or \ (backward slash) using regex

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

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

然后它将 return 仅那些包含斜杠的字符串。

你必须在正则表达式中转义它们。尝试

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

我不是 ruby 程序员,但您不应该将正则表达式用于这种简单的任务,因为正则表达式非常耗费资源。每种语言都提供了在另一种语言中查找字符串的功能。有时它被称为 instr、instring 或其他什么......你正在寻找的是

rindex(子串[ fixnum])

Returns 给定子字符串或模式(正则表达式)在 str.

中最后一次出现的索引

"hello".rindex('a') #=> nil

如果你得到 nil 字符串 "a" 在你的情况下找不到斜杠。

可以通过使用 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 更紧凑。