使用正则表达式检查字符串是否包含 /(正斜杠)或 \(反斜杠)
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#grep
比 Enuberable#select
更紧凑。
如何使用 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#grep
比Enuberable#select
更紧凑。