• ベストアンサー

テキストエディタなどでの正規表現を利用しての置換に

以下のように三桁の数字の後ろにaがついたものをbに置換したいです。ツールによって異なるとは思うのですが検索-置換をどのように設定したら思うような動作をしますでしょうか? 545a 567a 875a ↓ 545b 567b 875b 検索 [0-9][0-9][0-9]a 置換 [0-9][0-9][0-9]b

noname#133961
noname#133961

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

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.3

正規表現はソフトによって違うので、特定のものでやりたいなら、そのソフト名を明記するのが近道です。 EmEditorで使えるのは、以下のもののようです。 http://jp.emeditor.com/help/howto/search/search_regexp_syntax.htm 正規表現を使った置換で、検索側にある文字列を置換側で使う場合は「後方参照」というものを使います。 先の資料を見ると ・後方参照に使えるグルーピングを行う表現は() ・後方参照は\数字 だということがわかります。 ということで 検索: ([0-9][0-9][0-9])a 置換: \1b です。 #1さんのソフトでは、後方参照が$数字 #2さんのソフトでは、グルーピングが\(\) だったということです。 なお、EmEditorは使ってないので、実際に使えるかどうかの確認はしていません。

noname#133961
質問者

お礼

見事出来ました。正規表現にもかなり方言があるのですね。ある程度は統一されているものと思っていました。ご回答ありがとうございました。

その他の回答 (3)

回答No.4

三桁の数字だけの行があり、その行の数字の後ろを置換すると いう条件だけでしょうか? 例えば三桁以外の桁数の数字があり、行頭以外にも数字がある という条件だと複雑になります。 単純に三桁のみの数字についたaをbに変えるだけなら、以下の ようのものでも可能です。 [置換]ダイアログで[正規表現を使用する]へとチェックする。 [検索する文字列] → ^([0-9]{3})a [置換後の文字列] → \1b

noname#133961
質問者

お礼

3桁以外の数字も混在しているテキストなのです。ANo.3さんのグルーピング機能で目的を達することが出来ました。ご回答ありがとうございました。

  • morchin
  • ベストアンサー率16% (212/1281)
回答No.2

手元のテキストエディタで試しました。以下で出来ました。 検索 \([0-9][0-9][0-9]\)a 置換 \1b

noname#133961
質問者

お礼

ご回答ありがとうございました。私の使っているソフトウェア(EmEditor)ではどうもできないようでした。

  • morchin
  • ベストアンサー率16% (212/1281)
回答No.1

キャプチャを利用します。 検索 ([0-9]{3})a 置換 $1b 試していませんが、上記のような感じ。

noname#133961
質問者

お礼

ご回答ありがとうございました。私の使っているソフトウェア(EmEditor)ではどうもできないようでした。

関連するQ&A

  • サクラエディタの正規表現での置換

    サクラエディタの正規表現での置換の方法について教えて下さい。 行の末尾が数字で終わらない行の改行コードを削除したいと考えています。 ---------- 元ファイル ---------- 000abc123 777def 456 333ghi789 222jk+ 111 ---------- ---------- 加工後 ---------- 000abc123 777def456 333ghi789 222jk+111 ---------- 「置換前」は『[^0-9]\n』を入力することで検索できましたが、 「置換後」に何を設定すれば良いのかわかりません。(または「検索対象」の設定を変える必要があるのかなど) 例えば置換後に何も設定しないと「777de456」とfが消えてしまうため、”f”を残した上で改行コードを削除したいのですが その方法がわかりません。 よろしくお願いいたします。

  • 謎の文字列置換(正規表現)

    漢字かな、アルファベット(全角)、数字(半角)の混在した文章中で、二桁の数字のみ文字の前後に記号(例:♪)を付けたいとします。 正規表現に対応した置換ソフトやテキストエディタで 置換前:\b(\d{2})\b 置換後:♪$1♪ とすると、特定の文字の後ろにある二桁数字のみ検索から漏れて置換されないのですが、どこが間違っているのでしょうか。 <使用したテキストエディタ> k2editor <使用した置換ソフト> Speeeeed <置換から漏れる特定文字> 学、浜、工、田、修など <具体例>置換前 23 学23 23学 2323 浜23浜 <具体例>置換後 ♪23♪ 学23 ♪23♪学 2323 浜23浜

  • テキストエディタでの置換

    カテゴリが違うかとも思いますが、こちらをごらんになる方々は正規表現に詳しいかと思い、質問させていただきました。 あるテキストファイルで、  (1階)→ 1F のように変換したいのですが(数字はさまざまです)、編集メニューから検索・置換ウインドウをたちあげて、  検索する文字列:(.*階) とすれば検索はできます。 その後、数字は残して1Fのように変換することはできるのでしょうか? 文字数が非常に多いため、手動変換したくなくて・・ どなたかお教えください。お願いします。m(_ _)m

    • ベストアンサー
    • Perl
  • JavaScriptで正規表現と置換

    タイトル通りのことをしたいのですがいまいち出来ないです。 変数 A00 = "かきくけこ"; 配列 x[0] = "あいうえおA00さしすせそ" ; 配列x[0]内の「Aと2桁の数字」を探し、該当する変数と置換する。 と言うことをしたいのです(つまりx[0] = "あいうえおかきくけこさしすせそ") x[0].match() で探すことは出来ますが .replace()の書き方が分かりません^^; どちら様か御教授よろしくお願いします。

  • 置換の正規表現

    Win版Golive6を使用しています。 正規表現については初心者なのですが、 検索/置換で、$1がうまく使えず困っています。 具体的には <span class="price">¥2,100(税込・送料無料)</span> というタグの中から(税込み・送料無料)という表記だけを 消したいのです。ちなみに数字部分はそれぞれ異なります。 そこで、自分なりに、色々と試し最終的に以下のような 方法に行き着きました。 ▼検索 <span class="price">(.+)(税込み・送料無料)</span> ▼置換 <span class="price">$1</span> これで、検索はうまくいくのですが、$1という記号部分が 希望の数字ではなく記号そのままに表示されてしまいます。 ちなみに、 ・対象のページは数千ページあり、手作業では不可能です。 ・class="price"以外の場合は置換されると困ります。 ・¥(税込み・送料無料)は全角です。 何か間違えているのでしょうか?それともGoliveでは $1が使用できないのでしょうか。できればGoliveだけで できると助かりますが、他のソフトでもかまいません。 どうかよろしくお願いします。

  • 秀丸エディタの正規表現

    秀丸エディタの正規表現の機能を使って、次のような置換を考えています。 変更前 <A>hoge hoge PINEAPPLE hoge hoge PINEAPPLE hoge hoge</A> <B>hoge hoge PINEAPPLE hoge hoge PINEAPPLE hoge hoge</B> 変更後 <A>hoge hoge PINEAPPLE hoge hoge PINEAPPLE hoge hoge</A> <B>hoge hoge パイナップル hoge hoge パイナップル hoge hoge</B> 以下のようなものを試してもできませんでした。 検索 ^(<B>.*?)PINEAPPLE 置換 \1パイナップル このような変更を一度の置換で実現する正規表現はありますでしょうか。

  • 正規表現による置換

    HTMLの構文も正規表現もよく理解しないままに作業をしているので とんちんかんなことを言っているのかもしれません 合わせて指摘してもらえると助かります Yahoo pipes 使ってる中で発生している現象です 目的としては HTMLタグから一部の文字列を取り出したく 変換元のXTMLは以下のようなものです(一部加工しています(***** の部分は隠しています) <a rel="nofollow" target="_blank" href="http://*****.html">抽出したい文字列</a> <img alt="new" class="new" height="15" src="http://*****.jpg" width="32"/> に対して 置換対象  .*html">(.*)  置換後  $1   を行ってからさらに 置換対象  (.*)<img.*    置換後  $1  としたところ 一応抽出はできました    本来 2回目は  (.*)</a  の気がするのですが1回目の結果を見るとなぜか</a>    の部分もなくなってしまっています  これも不思議なのですが 2回に分けて行うのは面倒なので1度で行いたいと思い 置換対象  .*html">(.*)<img.* 置換後  $1 としてみたのですが 求めている文字列の抽出をすることができませんでした     .一応 *html">(.*)</a.*  というのもやってみましたが結果は変わりませんでした これは当然の結果ななのか変換(処理)ツールの不具合なのかの判断ができません 分かる人がいたら教えてもらえないでしょうか 情報足りなければ補足させていただきます

  • Excelで正規表現やワイルドカードなどを使って置換したいのですが…

    Excelの中で置換をしたいのですが、 例えば以下のように( )かっこでくくられた不規則な数字を検索し、その前後に記号を付加するといった具合です。 Wordだと置換で正規表現が使えますが、Excelではやはりマクロを作らないとだめなのでしょうか?  置換前   あいう(123)かきく(あああ)   さしす(ははは)たち(589)つ    ・      ・    ・      ・  置換後   あいう★(123)★かきく(あああ)   さしす(ははは)たち★(589)★つ    ・      ・    ・      ・

  • 正規表現で一括置換

    現在、数多くの長文データを、テキストエディタの置換機能で一括置換しています。 jeditX(または秀丸エディタ)の正規表現をもちいた複数一括置換について質問させていただきます。 私は正規表現やPC言語の初心者です。どうぞよろしくお願いいたします。 かなり困り果てております。どうぞ、正規表現にくわしいかた、よろしくお願いします。 一二三『一二三にそれぞれ♪マーク』 という文章に対して 一♪二♪三♪ という一括置換をすることには成功しました。 こう書いています。 ■検索文字列 (.{1,1})(.{1,1})(.{1,1})『(.{1,1})(.{1,1})(.{1,1})にそれぞれ♪マーク』 ■置換文字列 \1♪\2♪\3♪ これでぶじ、以下のように一括置換できました。 一♪二♪三♪ 現実には傍点や圏点をふっているんですが、判りやすく♪マークにしています。 この調子で長い文章も変換できていて満足していたのですが…… しかし代入文字が10個以上になったとたんに、まったく動きません。 ■置換したい文章 一二三四五六七八九十『一二三四五六七八九十にそれぞれ♪マーク』 ■検索文字列 (.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})『(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})にそれぞれ♪マーク』 ■置換文字列 \1♪\2♪\3♪\4♪\5♪\6♪\7♪\8♪\9♪\10♪ こうやると、置換後の文章は以下のようになってしまいます。 一♪二♪三♪四♪五♪六♪七♪八♪九♪一0♪ 10個目以降の数字が、正しく機能してくれません。 \10  という正規表現の書き方は 「一番目の値を参照して、それから数字の0を記入しなさい」 という意味になってしまうようです。 わたしは十番目の値を代入してほしいだけなんです。 \1 や \2 や \3 といった代入文字のように \10 や \11 を機能させる、正しい表記をご教授ください。よろしくお願いいたします。 ちなみに以下のように書いてもダメでした……。 \1\0 グーグルで1日中検索しても判りませんでした。jeditXの複数一括置換でこれをなんとかしたいのです。ご存じの方、どうぞ教えてください。よろしくおねがいします! 秀丸エディタをご利用で、正規表現にくわしい方も、ぜひヒントを出していただければと思います。

  • 秀丸で正規表現による置換

    正規表現でつまずいてしまったので教えてください。 こういうデータがあったとして ,,E,77774000,1,77770004480,〇〇〇,0,,,,,l_ ,,E,77774000,13,77770004479,〇〇〇,0,,,,,l_ ,,E,77774000,21,77770004478,〇〇〇,0,,,,,l_ ,,E,88884000,5,88880004480,〇〇〇,0,,,,,l_ ,,E,88884000,14,88880004479,〇〇〇,0,,,,,l_ ,,E,88884000,20,88880004478,〇〇〇,0,,,,,l_ 6列目に77770004480があったら、5列目の1を10にする。 6列目に88880004480があったら、5列目の5を10にする。 という事がしたいのですが、7777や8888の部分は必ず数字4桁で固定ですが、 実際には0000-9999まであるため、1万回置換するのは面倒です。 そこで、0004480があったら、ヒットする1や5を10に置き換える事がしたいのですが どのようにしたらいいでしょうか? また、12を2に置き換えることもあるので、5列目は 必ず数字ですが、1桁または2桁となります。 正規表現置換で使用するエディタは、秀丸です。 ,,E,77774000,1,77770004480,〇〇〇,0,,,,,l_ ↓ ,,E,77774000,10,77770004480,〇〇〇,0,,,,,l_ ,,E,88884000,5,88880004480,〇〇〇,0,,,,,l_ ↓ ,,E,88884000,10,88880004480,〇〇〇,0,,,,,l_ 以上よろしくおねがいいたします