Techioz Blog

グループ化を使用する場合、gsub を使用して Ruby の正規表現 (regex) を後方参照するにはどうすればよいですか?

概要

Webページから抽出したテキストデータにパッチを当てたいと考えています。 サンプル:

t="First sentence. Second sentence.Third sentence."

2 番目の文の終わりのポイントの後にスペースはありません。これは、元の文書では 3 番目の文が別の行 (br タグの後) にあったことを示しています。

この正規表現を使用して「」を挿入したいのですが ” 文字を適切な場所に挿入し、テキストにパッチを当てます。 私の正規表現:

t2=t.gsub(/([.\!?])([A-Z1-9])/,$1+"\n"+$2)

この正規表現を使用して「」を挿入したいのですが ” 文字を適切な場所に挿入し、テキストにパッチを当てます。 私の正規表現:

解決策

\1 を使用して置換文字列内で後方参照できます (キャプチャ グループ 1 と一致するため)。

t = "First sentence. Second sentence.Third sentence!Fourth sentence?Fifth sentence."
t.gsub(/([.!?])([A-Z1-9])/, "\\1\n\\2") # => "First sentence. Second sentence.\nThird sentence!\nFourth sentence?\nFifth sentence."