私はこれは愚かな間違いだと思いますが、私にとっては以下のコードは "M"だけの配列を返します。これを参照してください:Ruby Regex、1つだけのキャプチャ(非常に単純!)
/(.)+?/.match("Many many characters!").captures
=> ["M"]
なぜすべての文字の配列を返しませんか?私はこれに何が間違っているのか分からないので、何かが大変明らかに欠けていたに違いない。
編集:ちょうど実現しました、私は+を必要としません?それがなければまだ動作しません。
編集:謝罪!私は明確にします:私の目標は、ユーザーが正規表現とスタイリングと入力テキストファイルを入力できるようにすることです。一致する箇所があれば、テキストはhtml要素で囲まれ、スタイリングが適用されます。文字列を文字に変換するには、与えられた正規表現を使用しました。なぜなら、それは私の部分では愚かでしたが、最も簡単だったからです。 scan()からキャプチャグループを取得するにはどうすればいいのですか?私は$ 1が "!" (最後の試合?)、他にはありません。
編集:まあ、それは本当に私の日ではありません。私が死亡したことが通知されたので、キャプチャは別々の配列に格納されます。これらのキャプチャの元の文字列からのオフセットを取得するにはどうすればよいですか?キャプチャのオフセットを取得して別の文字列で囲むことができるようにしたいと思います。それともgsubは何のためですか?うまくいけば、最終的な編集
(私はキャプチャグループは、唯一のマッチを置き換えることではないと思った):右、私はちょうどこれを再び起動してみましょう:P
だから、私は文字列を持っています。ユーザーは設定ファイルを使用して正規表現を入力し、次に各キャプチャグループに関連付けられたスタイルを入力します。私は文字列全体をスキャンし、各グループのマッチの開始と終了またはオフセットとサイズを取得する必要があります。
ユーザーが([\w-\.]+)@((?:[\w]+\.)+)([a-zA-Z]{2,4})
(電子メールアドレス)を構成していたのであれば、私は得ることができる必要があります:
[ ["elliotpotts", 0, 11],
["sample.", 12, 7],
["com", 19, 3] ]
を文字列から: 「[email protected]」
それがない場合には明らかに、私には何か間違っているだけです:P。これまでの多くの人におかげでありがとう、そしてとても忍耐強くてくれてありがとう!
私はあなたの編集を見ましたが、スキャンからのキャプチャグループは別々の配列に格納されています。あなたの正規表現とテスト文字列をirbで試してみてください。あなたの次の編集を見ただけで、より多くの情報で更新する必要があります。 –
私はちょっと混乱しています:Pあなたが抽出する必要があるものを正確に知っているので、それが何であるかに関係なく、より完全な例を自由に投げてください。 –
あなたの最新の編集で私の答えを更新しました。私はちょっと結びついているので、解説のない完全な解決策です。理解できない場合は教えてください。 –