• ベストアンサー

正規表現で両端に文字列を置換

初心者です。環境:ruby こういう風にしたいのですが、どうやるのでしょうか? ◆変更前 20090925055902 20090925082043 ◆変更後 a20090925055902a a20090925082043a よろしくお願いします。

  • Ruby
  • 回答数3
  • ありがとう数5

質問者が選んだベストアンサー

  • ベストアンサー
  • siffon9
  • ベストアンサー率64% (136/211)
回答No.1

変更前が14桁の数字列固定という前提です。 a = '20090925055902' b = a.gsub(/(\d{14})/, 'a\1a') puts b #=> a20090925055902a

katsuo2009
質問者

お礼

この方法かなりいいですね! 勉強になります。 ありがとうございます。

その他の回答 (2)

回答No.3

はじめまして。 Stringクラスのsubメソッド、或いはgsubメソッドを使えばいいのかなぁと思います。 Rubyリファレンスマニュアル

参考URL:
http://www.ruby-lang.org/ja/man/html/String.html#sub,http://www.ruby-lang.org/ja/man/html/String.html#gsub
katsuo2009
質問者

お礼

最近javaを勉強中なので、よく調べてみます。 ありがとうございます。

  • ryu_chan
  • ベストアンサー率37% (69/186)
回答No.2

単純な方法ですが、以下はいかかでしょうか? num = '20090925055902' puts "a#{num}a" puts 'a' + num + 'a'

katsuo2009
質問者

お礼

ありがとうございます。 参考になりました。

関連するQ&A

  • 正規表現:囲われた文字列の置換

    シングルクオーテーションで囲われた文字列のシングルクオーテーションの前に文字を追加するように、正規表現を用いて置換しようと考えています。 全角文字は[^\x01-\x7E]で検索できるのはわかったのですが、シングルクオーテーションで囲われて、全角文字を含む場合という表現ができません。 下記のような、文字列を対象としています。置換をするのは、全角文字を含む文字列のみです。  全角文字のみ  半角文字のみ  全角半角文字両方 下記ののように置換したいです。 置換前: '全角文字や半角文字','testです','test'.'テスト'.'てすとtest','123' 置換後: A'全角文字や半角文字',A'testです','test'.A'テスト'.A'てすとtest','123' よろしくお願いします。

  • 正規表現を使って文字列置換を行いたい

    みなさんいつもお世話になります。 とあるプログラムの置換処理を行いたいのですが、 <a href="JavaScript:prfCallList(2,'27','27125','大阪市住之江区','')"> ↑の文字列の 「2,'27','27125','大阪市住之江区',''」 の部分(つまりprfCallList関数のパラメータ) が可変な文字列をいっきに <a href="shopmapItiran2.htm"> と変えたい時ってどのような正規表現になるのでしょうか? 私は正規表現を使うと楽らしいよってのは知ってるけど使った事がない・・・というレベルです。 ネットで一応正規表現入門みたいなサイトも読んでみたのですがよくわからず(T_T) お手数をおかけしますが、よろしくお願いします。

  • 正規表現を使っての文字列置換。

    ASP(VBScript)環境です。 長音符を半角ハイフンに置換したいのですが、うまくいかないので アドバイスいただけないでしょうか。 対象の文字列が住所を想定しているので、数字の間の長音符のみ ハイフンに置換したいと思っています。 例:ワンダービル1ー2ー3 → ワンダービル1-2-3 予め英数字は半角英数字にしてあります。 こんな感じで変換をしようとしてみましたが ----- '長音符の変換 Set ObjRegExp = Server.CreateObject("VBScript.RegExp") ObjRegExp.Pattern = "[0-9]ー[0-9]" StrHalf = ObjRegExp.Replace(StrHalf, "-") ----- これをかけてみると、「1ー1」が数字もろとも「-」になってしまいます。 問題点を教えていただけないでしょうか。

  • 【Ruby or Perl・正規表現】ある文字列の先頭5文字を残して削除するには?

    初心者質問で恐縮です。 RubyもしくはPerlで、ある文字列の先頭5文字を除く文字をすべて削除する(先頭5文字のみの文字列にする)には、どのような記述をすればよいでしょうか。 教えていただけるとうれしいです。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • 正規表現で置換したい

    ブログのシステムを変更して、 記事中にある内部リンクの書き換えが必要となりました。 現在、記事中に post-001.html post-005.html  ・  ・  ・ post-853.html という文字列があります。 数字は飛び飛びでそれぞれ異なり500個ほどあります。 WordPressのプラグインの「Search Regex」を使って置換をしたいのですが、 正規表現で置換して、 ハイフンをアンダーバーに置換し、お尻の「.html」は削除して post_001 post_005  ・  ・  ・ post_853 としたいのですが、正規表現で置換する場合、 どのようにすればいいのでしょうか。 「post-」を ( ) でくくればいいのでしょうか。 「.html」削除するにはどうすればいいのでしょうか。 Search Regex に Search pattern(置換前の文字列)と Replace pattern (置換後も文字列)を入力する欄があります。 上のような文字列を置換したい場合は、 それぞれどのような記号を入力すればよいのでしょうか。 アドバイスをよろしくお願いいたします。

    • ベストアンサー
    • Perl
  • 正規表現でテキスト処理をしてDBに戻す

    プログラミングもrubyも初心者です。 2008121407030202,14(1,2)13,4(3,8,9,15)7,12-(5,6,11)10 2008122109050607,(*3,6)12,4(1,13)-(7,11)-(8,9)5=2 10 2009011008010309,3,8,13,9(1,12)(2,6)(10,7)(4,11)5 ↓ 2008121407030202,14,(1,2),13,4,(,3,8,9,15,),7,12,-,(,5,6,11,),10, 2008122109050607,(,*,3,6,),12,4,(,1,13,),-,(,7,11,),-,(,8,9,),5,=2, ,10, 上段のようなテキストを下段のように数字ごとに区切ってDBに戻したいと考えています。rubyに読みこんで正規表現でどうにかして配列に入れていくのかと思いますが どこから手を付ければいいか取っ掛かりが分かりません。 考え方や参考になるサイトでも結構ですのでご教授ください。

  • rubyの正規表現で"["を使いたいのですが、正しく実行できません

    rubyの正規表現で"["を使いたいのですが、正しく実行できません #! ruby -Ks a ="test[test" b ="test[" if /#{b}/ =~ a print "hit" end エラー内容は test.rb:4: invalid regular expression; '[' can't be the last character ie. can't start range at the end of pattern: /test[/ (RegexpError) "\["と文字を入力することで解決するかと思いましたが上手くいきませんでした。 rubyのバージョンは1.8.2です。宜しくお願いいたします。

    • ベストアンサー
    • Ruby
  • ExcelVBAでの文字列置換について

    ExcelVBAでの文字列置換について ExcelVBAは全く初心者のですが、下記の処理を早急に行う必要があり、質問させていただきます。 物品の使用者をエクセル管理しています。 シート1のA列に物品名、B列に現使用者名を入力しています。(約2000件) 一部の使用者に変更があった場合に、シート2に振替リストを シート2 A列=現使用者 B列=新使用者 と作成しています。 シート1のB列:現使用者から、シート2のA列:現使用者と同一な文字列を検索し、シート2B列:新使用者に置換するマクロはどのように書けばよいのでしょうか? 可能であれば、シート2のC列に置換結果を表示させたいです。

  • 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
  • PHPの正規表現による文字列置換について

    下記のような文字列から「abcde」のみを変数に格納したいのですが、正規表現に苦戦しています。 http://example.com/detail.php?p=abcde.php 取得したい「abcde」のみが毎回変わり、その前後は固定です。 preg_replace()を使うのがいいのだろうなと思い、いろいろやってみているのですが、 なかなかマッチさせることができません。 どうかご教示頂けますでしょうか。

    • ベストアンサー
    • PHP