• 締切済み

ruby 文字削除 位置指定の方法について

a = "aaaacccaaacccaaaaaaaaaaaaaaarubyaaaaa" の場合、ruby以降(aaaaaa)を最後まで削除したい場合、 どのように記述したら良いですか? 実際の使用用途は、nokogiriでスクレーピングした、長いhtmlを整形するために使用したいです。 一致した文章(上記の場合、ccc)はgsubで削除できたのですが、指定した文字(上記の場合はruby)に一致した文字以降全てを削除という記載方法がわかりません。どなたか教えて下さいませ。 ■環境 linux ruby 1.9.3

  • Ruby
  • 回答数2
  • ありがとう数6

みんなの回答

  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.2

以下のようにしてください。 --------------------------- a = "aaaacccaaacccaaaaaaaaaaaaaaarubyaaaaa" a.sub!(/(.*)ruby.*/){$1} p a ---------------------------- 実行結果: "aaaacccaaacccaaaaaaaaaaaaaaa"

回答No.1

gsub知ってるなら正規表現が使えることも知ってると思うんですが。 /ruby.+/

関連するQ&A

  • [Ruby]外部ファイルの全角文字削除ができない原因を教えてください

    Rubyでの全角文字削除について質問です。 (環境:Windows XP,cygwin) コマンドライン引数で指定した外部ファイルを読み込んで全角文字を削除しようとすると、 全角文字が削除できないのですが、この原因がわかる方がいらしゃいましたら教えてください。 ・外部ファイル(Shift_JIS,改行=CR+LF) "7桁の| 郵便番号を| 入力して|,ください" ・Rubyスクリプト(cygwin上のため、EUC-JP,改行LF) #file.each_line do |line| # line.gsub!(/ /,'') # line.gsub!(/,/,'') # line.gsub!(/|/,'') #end 全角スペース、全角カンマ、全角パイプラインすべて削除できません。 半角文字は上記方法で削除できます。 しかし、スクリプト中に以下のような記述をすると、 #text = "7桁の 郵便番号を 入力して,ください" #print text.gsub(/ |,/,'') 「7桁の郵便番号を入力してください」と全角文字が削除されて表示されます。 教えてください。 よろしくお願いします。

  • Ruby1.9で文字列の置換がうまくいきません。

    Ruby1.9で文字列の置換がうまくいきません。 以下の処理を実行すると、gsubのところでEncooding::CommpatibillityError とエラーが発生してうまく置換が出来ません。 何が原因でしょうか。あるいはもっと簡単な方法で置換する方法がありましたら ご教示のほどお願いいたします。 <仕様> 半角、全角に関係なく指定文字で置換する。 ※大文字部分は実際は全角文字です。 moji1 = 1abc56abcABC" moji2 = "abc" moji3 = "CBA" ⇒正しい置換結果は、"1CBA56CBAABC" #半角→全角 空白含 moji2 = moji2.tr('a-zA-Z0-9 - ', 'a-zA-Z0-9 - ') moji2 = NKF::nkf( '-SsXm0', moji2 ) data = moji1.gsub(moji2,moji3)       ↑↑↑ここで上記のエラー発生する。 どうか宜しくお願いいたします。

    • ベストアンサー
    • Ruby
  • rubyのsub、gsubを使った文字列の置換について

    rubyによる文字列の置換でちょっと困っています。 例えば text = "ABCDABCEFG" という文字列があったとします。 その中の"ABC"の部分を"あいう"と置き換える場合 text = text.gsub(/ABC/, "あいう") で text = "あいうDあいうEFG" と置換できるはずです。 以上のような操作は問題ないのですが 置換対象と置換後の文字列を以下のように定義して subに放り込むということは出来ないのでしょうか。 置換前文字列:mae = "ABC" 置換後文字列:ato = "あいう" text = text.gsub(/mae/, ato) でもこれだと置換対象が"mae"という 文字列になってしまいますよね・・・ そもそもこのような機能はrubyにはないのでしょうか。 でも無いとかなり不便だと思いますが・・・ 現在何十万行のcsvファイルを数千行の置換文字列対応表 をつかっていっぺんに処理しようとしまして 以上のような方法をとろうとして詰まっています。 どなたか詳しい方ご教授よろしくお願いします。

  • C# 特定文字列まで削除の方法

    C#を初めて2週間ほどになります。 今組んでいるプログラミングで文字列内で先頭文字から特定の文字まで削除をしたいのですが、難しく苦戦しています。 B - 不要部分 A ‐必要部分 C- 特定文字 例 C:\BBBBBBBBBB\CCCAAAAAAAAAAAAAA.txt 先頭からCCCまで削除しCCCAAAAAAAAA.txtだけ残したいです。 もしない場合はCCCの先頭文字の位置を検索しRemoveで先頭からそのCCCの先頭文字で削除しようと考えています。 宜しくお願い致します。

  • 【Ruby】shift-jisのページの置換

    content="text/html; charset=shift-jis"のページを読み込んで、文字列の置換がしたいです。 #!/opt/local/bin/ruby require 'uri' require 'open-uri' url='http://hoge.hoge' open(url,'r:shift_jis'){|io| content = io.read content.gsub!(/ほげ/,'ホゲホゲ) print content } 上記の様に書いてみました。ソースコード自体はUTF-8で記述しました。 実行すると、 `gsub!': incompatible encoding regexp match (UTF-8 regexp with Shift_JIS string) (Encoding::CompatibilityError) となってしまいます。 どうしたらよいのでしょうか? rubyのバージョンは ruby 2.0.0p353 (2013-11-22 revision 43784) [x86_64-darwin12] です。 以上、よろしくご指導のほど、お願い申し上げます。

    • ベストアンサー
    • Ruby
  • Ruby1.9での文字列操作について。

    Ruby1.9での文字列操作について。 今までRuby1.8を使用していましたが、Ruby1.9に変えてから、次の4種類の問題が出てきました。 (※Ruby1.9に変えてから、#encoding: shift_jisを定義しております) どれか1種類でも結構ですので、Ruby1.9での対策、代替の処理について教えてください。 <問題1> ■文字列を指定のバイト位置まで削除する □現在(Ruby1.8)のコード moji = "1あアあアイ234565789" moji[4,14] = "" →1.8では、"1あア"となりますが、1.9では、"1あアあ"となります。 <問題2> ■文字列の中から指定文字が見つかったバイト位置の算出 □現在(Ruby1.8)のコード n = "あいうえお".index("う") →1.8では、n=4となりますが、1.9では、n=2となります。 <問題3> ■指定した年月日の存在チェック □現在(Ruby1.8)のコード y = 1900 m = 3 d = 10 if Date.exist?(y,m,d) p "test# end →1.8では、trueとなりますが、1.9では実行時にNoMethoodErrorとなります。 <問題4> ■半角英数字→全角英数字変換 □現在(Ruby1.8)のコード sss = moji.tr('a-zA-Z0-9', 'a-zA-Z0-9') →1.9では実行時にエラーメッセージが出力されます(略) 色々と書きましたが、どうかお助けください。

    • ベストアンサー
    • Ruby
  • rubyの文法について質問です。

    rubyの文法について質問です。 aaa = `diff -q bbb ccc` のような形でdiffコマンドの実行結果をaaaに格納したいのですが bbb及びcccを任意に入力したく、一度getsメソッドでbbb,cccそれぞれに文字列を代入したのですが、それをバッククォーテーション内で使用できず困っています。 なにか解決策がありましたらご教授いただけるとありがたいです。 よろしくお願いします。

    • ベストアンサー
    • Ruby
  • PHP ある文字列以下を無視(削除)

    /dir1/index.html?aaa=1 /dir2/index.html?bbb=2 /dir3/index.html?ccc=3 上記のような変数設定のURLがあり、?以降に法則は無く、毎回何が入るか分かりません。 そこで文字列操作、正規表現、などを用いて以下のように整形したいのです。 /dir1/index.html /dir2/index.html /dir3/index.html ?以降を取り去った形で取得する方法をご教授願います。

    • ベストアンサー
    • PHP
  • テキストファイルの任意の文字以降の文字列を削除したい

    test.txt AAA+あいうえお BBB+かきくけこ CCC+さしすせそ DDD+たちつてと EEE+なにぬねの 上記(test.txt)のようなテキストファイルから、各行の+以降の文字列を削除して、 以下(result.txt)のようなテキストファイルを生成させるプログラムを作成させたいです。 result.txt AAA BBB CCC DDD EEE このようなプログラムを作るにはどのようにすればよいでしょうか? よろしくお願いします。

    • ベストアンサー
    • Java
  • Rubyで特定の文字以降をカットしたい

    RubyというかRGSSなのですが、外部から読み込んで変数に代入した文字列のうち、その中にある特定の文字以降をカットしたいのです。 現在は「:(全角コロン)」を使用していますが、それでは面倒だというのなら処理しやすい文字(記号)にデータを変更することはできます。 正規表現と特定の関数かな、というくらいの予想しか今の自分にはわからないので、どなたか教えてください。

専門家に質問してみよう