2016-11-03 8 views
1

Regexpを使用して/とスラッシュを含む文字列を見つける方法はありますか?正規表現を使用している文字列に/(スラッシュ)または(バックスラッシュ)が含まれていないか確認してください。

Ex。私は次の配列を持っています['ABC', 'abc/sd', dsa\adf', as/\sfd', ball, cat]

スラッシュを含む文字列だけを返します。

+0

これを試してください:https://regex101.com –

答えて

2

正規表現でエスケープする必要があります。お試しください。

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

私はルビープログラマーではありませんが、このような単純なタスクに正規表現を使用するべきではありません。正規表現はリソースが不足しています。すべての言語は、別の言語内で文字列を検索する機能を提供します。時にはそのinstringまたは何でも、INSTRと呼ばれる...何uが求めているのでは与えられた部分文字列またはパターン(正規表現)の最後に出現する位置のインデックスを返します

RINDEX(サブストリング[、FIXNUM])

ですstr。

"こんにちは" .rindex( 'A')#=>

ゼロU "は" ウルの場合、スラッシュが検出されない文字列nilを取得する場合。

+1

これは正しくありません。 Ruby 'Enumerable#grep'はこの操作に最適化されています。一致した結果を任意の変数に代入せずに一致します。空の 'Enumerable#gsub'を実行した後、' $〜 '変数を検査してください。 – maicher

1

これは、正規表現の引数でEnumerable#grepを使用することによって達成することができます:%r()表記法を使用して

arr = ['ABC', 'abc/sd', 'dsa\adf', 'as/\sfd', 'ball', 'cat'] 
regex = %r{[\\/]} 
arr.grep(regex) 
=> ["abc/sd", "dsa\\adf", "as/\\sfd"] 
  • Enumerable#grepを使用すると、この場合はEnuberable#selectことをもう少しコンパクトで
  • 、あなたomit escaping slash /することができます。
関連する問題