• ベストアンサー

文頭が一致するものの末尾を置換したい。正規表現で実現できるでしょうか?

文頭が一致するものの末尾を置換したい。正規表現で実現できるでしょうか? 頭に「AN」と付いたら、末尾のカンマを1つ削除というような置換を行いたいと 思っています。 例: AN,,,,,,, ↓ AN,,,,,, にしたい。 頭の文字以降はランダムで、末尾にカンマということだけは同じです。 ランダムなので、普通にメモ帳で置換ということは出来なさそうですし、 サクラエディタなどで正規表現を使ってあげたらいけるのかなと思ってるのですが、 疎いのでどうしたら良いかわからず困っております。 ご教授いただけないでしょうか?

  • ginfix
  • お礼率34% (330/962)

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

  • ベストアンサー
  • diszo
  • ベストアンサー率78% (32/41)
回答No.3

#1の方に示していただいた正規表現で、 サクラエディタでも実現できます。 メニュー:「検索」→「置換」と選び、 置換ダイアログが出てきます。 正規表現のチェックボックスにチェックを入れ、 置換前を「^(AN.*),$」とします。 置換後を「$1」として、 置換してみてください。

ginfix
質問者

お礼

ありがとうございます! サクラで実現できました。 困っていたので本当に助かりました。

その他の回答 (5)

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

#2です。 >下のコマンドだと、末尾一文字だけ削除にはならないように思うんですが(ならなかった)実行環境がまずいのでしょうか…。 ううむ・・・・ vectorのsedでは置換できませんね。 失礼しました。 お詫びに秀丸での置換例です。 秀丸でテキストを表示して、 検索(S)->置換(R)として 検索 ^(AN.*),$ 置換 \1 を入力して下さい。尚、そのとき、必ず正規表現にチェックを入れて実行して下さい。 実際に、version7.07の秀丸で確認しました。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.5

「sed を使う」なら, /^AN/s/,$// のほうがより直接的に「やりたいこと」を書いているような気がする.

  • papagal
  • ベストアンサー率50% (7/14)
回答No.4

SEDは下記ではないですか? "s/^\(AN.*\),$/\1/"

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

sedによる正規表現での回答は#1のかたの通りですが、 正規表現以前に、どの環境で、どのようなツールを使ってやるのかを決めた方がよいと思いますよ。 質問を見た限りでは、windows上で実行したいと理解しましたので(windows-7,vista,xpの区別もできれば判った方がよいです。) 1案、サクラエディタで置換する。 2案、秀丸で置換する。 3案、コマンドプロンプトで、sedもしくはsedもどき(これは標準では組み込まれていないのでvector等からダウンロードの必要があります。vectorにあるかどうかは、未確認です)で、置換する。 4案、perl,awkが使えるなら、コマンドプロンプトでそれで行う。(perl,awkも標準では組み込まれていませんので3案と同じことをおこないます) 現実的には1案かと思います。 1案だと、サクラエディタに詳しい人のみしか、回答できないので、良回答が得られるかどうかは、微妙です。(私もサクラエディタの場合は、回答できません) 2案だと、秀丸の利用者は多いので、回答がつきやすいです。 3案は、質問者様にとってちょっとハードルが高いかも知れません。 4案は、もっとハードルが高いかも知れません。 今後も、一括して修正を行うようなことがあるなら 2案、又は3案をおすすめします。(4案ができるならベストですが・・・) 秀丸は一定期間、無料で使用できますのでご安心下さい。 3案、4案の製品は当然無料で使用できます。

参考URL:
http://www.vector.co.jp/
ginfix
質問者

補足

3で対処しています。 ベクターでプロンプトからsedが実行出来るものを落としました。 単純な、s/aaa/bbb/gみたいなものは理解してますが…。 下のコマンドだと、末尾一文字だけ削除にはならないように思うんですが(ならなかった)実行環境がまずいのでしょうか…。

noname#111181
noname#111181
回答No.1

sedによる置換式は下記のようになります。 s/^(AN.*),$/$1

ginfix
質問者

補足

sed実行可能環境ですが、うまくいきません。 コマンドはこれで良いんですよね…?

関連するQ&A

  • 正規表現で前方一致を実現したい

    お世話になります。 正規表現を用いて、ある特定の文字を前方一致で検索し、ヒットしたその文字以前のを置換する、ということを実現するにはどのような記述をすればよいのか分からず困っています。 たとえば、  あいうえお&かきくけこ&さしすせそ という文字列があったとき、最初の「&」以前だけを削り、結果、下記のような文字列を取得したい場合、どのような記述をすればよいでしょうか。  かきくけこ&さしすせそ これを秀丸エディタ上で実現したいです。 宜しくお願いします。

  • Perl正規表現s置換演算子の末尾にカンマについて

    お世話になります。 Perl正規表現プログラムで、 s置換演算子の末尾に、 カンマと丸カッコでスカラ変数を囲んで、 存在している箇所 たとえば、 s/あいうえお/($hensu = $&) =~ tr{ABC}{abc}, ($hensu) =~ s{123}{123}, ($hensu) /eg; のような正規表現であれば、 上記のtr置換演算子や、s置換演算子それぞれの末尾に、 「 , ($hensu) 」 として、カンマと丸カッコでスカラ変数を囲んで、 存在している箇所は、 どのような意味があるのでしょうか? 以上になります。 PS: ネット上や正規表現の本などを読んでも、 上記したような、 カンマと丸カッコでスカラ変数を囲んでいる パターンの解説を、 見つけられなかった為、 ご質問させていただきました。 ご存じの方がいらっしゃいましたら、 教えてください。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • 正規表現による改行の置換

    Windowsで正規表現ができるテキストエディタ(NoEditer)を使っており、次のような改行で区切られた文を最後のピリオッドまでをつなげたいと思っています。例文ではX,Y,Z.の直後には改行が入っており、目的はAaaaXBbbbYCcccZ.と一文につなげることです。 [例文] AaaaX BbbbY CcccZ. 正規表現で \n[^(\.\n)] としてを空欄に置換すると2行目以降の頭が消えてしまいます。---> AaaaXbbbYcccZ.  文頭の文字が消えずつなげる方法を教えて下さい。

  • 秀丸の置換で正規表現を使う方法を教えてください

    お世話になります 秀丸エディタの置換を用いて、 (’.ab12#-cd’)のような文字列や数字、記号のまじった ( )から( )の中身を検索置換して (’’)にしたいと考えています。 具体例 (’.ab12#-cd’) (’.ab#37-c’) (’..ab-82#d%’) (’.12jg+#ppv’) (’.ab12lentext’)から ↓ (’’)に置換したい。 秀丸を使うときはあっても単純な 一文字程度の検索置換しかおこなったことがなく どうにも方法がうかばなかったところ 友人から、正規表現というものを 使えば実現できるようだと聞きました。 友人も残念ながら、プログラミングの経験は あまりなくて正規表現での記述方法は わからないいうことでした。 正規表現を使ってこれを実現する方法を 教えていただけませんでしょうか よろしくお願いいたします

  • 正規表現で置換

    正規表現の初心者です。 テキストエディタを使って、「@:」で始まる以外の行の先頭に「//」を挿入してコメントアウトしたいのですが、正規表現がうまく書けません。 検索対象: ^[^(@:)] 置換文字列: // でいいのかなと思ったのですが、[]の中ではグルーピング用の()も文字として認識されてしまうのですね。 どのように書いたら正しく置換されるでしょうか。 どうかご教示ください。

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

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

  • 正規表現で一括置換

    現在、数多くの長文データを、テキストエディタの置換機能で一括置換しています。 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の複数一括置換でこれをなんとかしたいのです。ご存じの方、どうぞ教えてください。よろしくおねがいします! 秀丸エディタをご利用で、正規表現にくわしい方も、ぜひヒントを出していただければと思います。

  • 正規表現について教えてください

    これから正規表現を勉強しようとする者です。 次の2点について教えて頂きたいのですが、よろしくお願いします。 1.次のような置換をする正規表現は? 例えば、 ■■■ あいうえお かきくけこ ■■↓ ○○○ あいうえお かきくけこ ○○○ というテキストがある場合、○○○~○○○までの「あいうえお」 のみを「アイウエオ」に置換するには、どのような正規表現にすれば 良いのでしょうか? 2.秀丸エディタでは、フォルダ内の全ファイルを一括で置換する 事はできるのでしょうか? 以上2点です。 よろしくお願いします。

  • 正規表現を教えて下さい(テキストエディタでの置換)

    いつもお世話になっております。 正規表現に関して細かい質問をさせて下さい。 例えば、G-01,T-02,F-05とあったときに、 これを、01,02,05としたいとき、 正規表現の置換で「[A-Z]-[0-9][0-9]」→「[0-9][0-9]」とすると、 "[0-9][0-9]"という文字列だけ残ってしまいます。 既存の文字列をそのまま残すにはどのようにしたらよいでしょうか? ※テキストエディタでの置換に関してです。 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • テキストエディタでの置換(正規表現チェック済)と同様のことを

    テキストエディタでの置換(正規表現チェック済)と同様のことを エクセルのマクロでもしたい。 画像を添付しましたが、秀丸で置換を選択し、 検索文字列と置換文字列を入れて、正規表現チェックのチェックボックスを 選択した状態で実行するのと同様のことをエクセルのマクロで行いたいです。 正規表現混みだととても難しいです。 やりたいことはマクロで、フォルダ内のテキストファイルを置換をかけていきたいです。(テキストファイルは複数ある状態)そのテキストファイルを更新できればいいです。(別テキストで出力されてもいいです。) どなたか詳しい方、教えていただけませんでしょうか? よろしくお願いいたします。 --- 検索エディタ【秀丸】【置換】 検索【.*item1=(.*) item2=(.*) .*】 置換【\1\t\2】 正規表現チェック

専門家に質問してみよう