2012-03-16 19 views
38

ruby​​で正規表現を使用して文字列を複数のパターンと照合する方法を教えてください。複数のパターンと文字列を一致させる

文字列が接頭辞の配列に含まれているかどうかを確認しようとしていますが、これは機能しませんが、少なくとも私がしようとしていることを実証していると思います。

答えて

74

使用Regexp.unionはそれらを結合する:

組合(pats_ary)→new_regexp

戻り与えパターンの労働組合であるRegexpオブジェクトを、すなわち、一致しますその部品のいずれか。

これが行います。

re = Regexp.union(prefixes) 

を、あなたがあなたの正規表現としてreを使用します。

if name.match(re) 
    #... 
+1

1ニース1。私はこれを使うつもりです。 – Kyle

+0

@Kyle:ありがとう。 'Regexp.union'は大きな代数正規表現を手で構築しようとするよりもずっと使いやすくなります。 –

+0

もう一度@muistooshortに感謝します! –

8

単一の文字列を使用できる場合は、可能な値を含む正規表現を書くほうが速い場合があります。

 
/(Mr\.|Mrs\.| ...)/.match(name) 
関連する問題