2

これは、複数の正規表現評価を必要とするが、私がやりたいことを取得する1つの出力です(テキスト以外のすべてを削除します)。

words = IO.read("file.txt").
gsub(/\s/, ""). # delete white spaces
gsub(".",""). # delete periods
gsub(",",""). # delete commas
gsub("?","") # delete Q marks
puts words
# output
#      WheninthecourseofhumaneventsitbecomesnecessaryIwanttobelieveyoureallyIdobutwhoamItoblameWhenthefactsarecountedthenumberswillbereportedLotsoflaughsCharlieIthinkIheardthatonetentimesbefore

この投稿を見て-Rubygsub:もっと良い方法はありますか-私は、複数の正規表現評価なしで同じ結果を達成するために一致を試みようと考えました。しかし、同じ出力は得られません。

words = IO.read("file.txt").
match(/(\w*)+/)
puts words
# output - this only gets the first word
# When

そして、これは最初の文だけを取得します:

words = IO.read("file.txt").
match(/(...*)+/)
puts words

# output - this only gets the first sentence
# When in the course of human events it becomes necessary.

gsubではなく一致で同じ出力(空白と単語以外の文字を取り除くことを含む)を取得するための提案はありますか?

4

2 に答える 2

1

1つのgsub操作で必要なことを実行できます。

s = 'When in the course of human events it becomes necessary.'
s.gsub /[\s.,?]/, ''
# => "Wheninthecourseofhumaneventsitbecomesnecessary"
于 2012-04-24T06:54:39.390 に答える
0

このために複数の正規表現評価は必要ありません。

str = "# output - this only gets the first sentence
# When in the course of human events it becomes necessary."
p str.gsub(/\W/, "")
#=>"outputthisonlygetsthefirstsentenceWheninthecourseofhumaneventsitbecomesnecessary"
于 2012-04-24T07:03:25.483 に答える