のルビ配列を取りましょうsentences
。私たちが持っている配列内で
- 単語のみを含む文
- 電話番号を含む文
- 測定単位付きの数値を含む文
- この場合、次のようになります:
1mL
、55mL
、1 mL
など
- この場合、次のようになります:
1x
またはとして示される量を含む文5 x
。
gsub
or関数のルビ正規表現を構築しようとしてscan
います。上記の配列をクリーンアップして、sentences
各文に単語 (1)、測定単位 (3)、および数量 (4) のみが残るようにしますが、クリーン電話番号 (2) などの単語以外のすべての文字と、\t
.
私はこれまでのところこれを持っています:
sentences.map do |sentence|
sentence.gsub!(/(?:(\d+)(?:[xX])|([xX])(?:\d+)[^a-zA-Z ])/, "")
end
残念ながら、それは私が置き換えたいものとは正反対のものを置き換えます。また、測定単位を保持したい場合はまったく考慮されていません。
入力と出力の例:
入力: Lavender top (6 mL size preferred)
出力: Lavender top (6 mL size preferred)
入力: Blood & bone marrow aspirate: 15 mL centrifuge tube with transport media. Available from Cytogenetics, 415-123-4567.
出力: Blood & bone marrow aspirate: 15 mL centrifuge tube with transport media. Available from Cytogenetics, .
入力: Gold top x1, Lt. Green top x 1, Lavender top x1
出力: Gold top x1, Lt. Green top x 1, Lavender top x1
したがって、事実上、数字やその他の英字以外の文字を置き換えますが、数字が測定値や量を表していない場合に限ります
rubular で約 3 時間プレイしましたが、役に立ちませんでした。先読みを完全に誤解しているか、重要な落とし穴の瞬間を 1 つ見逃している可能性があると思います。
正規表現の専門家が参加するのを楽しみにしています!