Ruby 2.4を使用しています。私は正規表現を作成するには、配列内に出現する文字の後ろに任意の数の空白をマッチさせます。だから私はこの別の正規表現でRegexp.unionを使用するにはどうすればよいですか?
LETTERS = ["a", "b"]
# => ["a", "b"]
data = ["asdf f", "sdfsdf x"]
# => ["asdf f", "sdfsdf x"]
data.grep(/(^|[[:space:]]+)[#{Regexp.union(LETTERS)}]$/i)
# => ["asdf f", "sdfsdf x"]
を試みたが、あなたが見ることができるように、どちらのトークンは、私の配列の文字で終わるという事実にもかかわらず、両方のトークンが一致なっています。これを説明するために正規表現を書き直すにはどうすればよいですか?
ありがとうございますが、これは私が持っていたものと全く同じではありません。どのように "/ i"(大文字のinsenstivieの一致)を複製するのですか?また、「\ s +」は「[[:space:]] +「 – Dave
」と同じではありません@Dave '\ s +'は '[[:space:]] +'と似ていますが、同じではありません。私は大文字小文字を無視するように編集しました。 –
'Regexp :: IGNORECASE'は内部の正規表現によってまだ無視されます。あなたの正規表現は、例えば '' test A ''にマッチしません。 –