• ベストアンサー

正規表現の使い方をお教えください

サクラエディターを使っています。    正規表現の使い方の勉強中ですWEBも参考させていただいているのですが    下記のようなテキストがあるとき空白2行以上あるときこれを1行にしたいのです コヒノール 芯ホルダー4301 木製軸 2.5mm・2mm芯ホルダー KOH2ミリ芯ホルダー5216黒軸 木製軸でないものもある 木軸ショート/2.5ミリ芯    宜しくお願い致します。

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

  • ベストアンサー
回答No.2

サクラエディタでは、検索条件として改行含む複数行の範囲を 指定することができません。 http://sakura.qp.land.to/?FAQ%2F2 どうしても正規表現を使った置換で対応したいのなら、一回の 置換でなく二回の置換で可能な場合もあります。 改行である\r\nを、テキスト内で使われていない記号や文字に 置き換えます(例:改行記号を★に変換するなど)。 置換前: \r\n 置換後: ★ これで質問の例文が以下のようになります。 コヒノール 芯ホルダー4301★★木製軸 2.5mm・2mm芯ホルダー★★★KOH2ミリ芯ホルダー5216黒軸★★★木製軸でないものもある★★木軸ショート/2.5ミリ芯★★ ★を改行+改行にします 置換前: ★ 置換後: \r\n\r\n これで以下のような例文になります。 コヒノール 芯ホルダー4301 木製軸 2.5mm・2mm芯ホルダー KOH2ミリ芯ホルダー5216黒軸 木製軸でないものもある 木軸ショート/2.5ミリ芯 このような空白行が常に一つあるものにするだけなら、上記 設定で問題ないですが、空白行がない改行されただけの場合、 連続した行も空白行が常に設定されてしまいます。 空白2行以上あるときのみを対象にしたい場合は、標準機能 としては無理なので、以下の方法で対応するしかありません。 http://sakura-editor.sourceforge.net/cgi-bin/cyclamen/cyclamen.cgi?ol=200306&tree=c2866 [2866] Re5: 連続する改行を一つにしたい   ▽ 2003/4/8 (火) 14:59:37 MMX Opera/7.03 (Windows NT 5.1; U) [ja] ▼ すいさん > 以外にありません。 if文の原料が少ないと苦しいです。 エディタの状態値(Getxxxx)は不足している。 ------ 連続空白行圧縮.PPA S_GoFileEnd(0); // ファイルの最後に移動 while True do begin S_SearchPrev('^[ \t]*\r\n', 4); // 前を検索 if S_GetSelectedString(0) = '' then Break; S_InsText('★'): // 置換 end; S_ReplaceAll('^★+', '\r\n', 4); // ------------------------------------- このマクロはPPA.DLLが必要です。 http://sakura-editor.sourceforge.net/htmlhelp/HLP000269.html ダウンロード先の一番上にある[ DownLoad: PPA_124.LZH ]が 必要なものです。 解凍したらPpa.DLLをサクラエディタのフォルダに追加します。 ----で挟まれた範囲をエディタに記載して[名前を付けて保存]で 「連続空白行圧縮.PPA」などにして、[ macro ]フォルダに保存。 テキストを開いた状態で、[ツール]→[名前を付けてマクロを実行] で上記マクロを探し[開く]で実行します。

yama0192
質問者

お礼

早速の回答 ありがとうございます。   大変詳しい回答で色々なことが分かりましたが   同時に私にはまだまだ山のように勉強しないと   いけないとしりました。   これからもお世話になることが多いと思いますが   宜しくお願いしたと思います。   

その他の回答 (1)

回答No.1

正規表現は、ソフトによって動作に若干の違いがあるので、OKとは言い切れませんが、 ^\n\n+ ↓ \n の置換でおそらく大丈夫だと思います ただ一度では削除できず、ヒットしなくなるまで複数回行う必要があるかも

yama0192
質問者

お礼

早速の回答ありがとうございます。  テストさせていただきましたがサクラエディターではだめのようです  この後も勉強を続けたいと思いますのでこれからも宜しくお願いたします。  ありがとうございました。

関連するQ&A

  • 正規表現を教えて下さい。

    正規表現を教えて下さい。 1行目の各拡張子を(赤)、2行目の行頭のsakuraを(青)、それ以外を(黄)に色分けする正規表現を教えて頂けないでしょうか。 [.txt;.ini;.cfg; sakura|"D:\Program Files\sakura\sakura.exe" "%P" ] サクラエディタ ver.1.6.50

  • 正規表現の使い方をお教えください

    サクラエディター使っていますが・・・。  例・正規表現である文字が行の二か所以上あるとき最初に出てくる文字より・ この場合「文字」が二か所ありますが先に出てきた「文字」より前を削除したいのですが 後の方の「文字」より前側削除なってしまいますがどのようにすればよいのかお教えください。   宜しくお願いします。

  • 正規表現の使い方をお教えください

    サクラエディター使っていますが・・・。  正規表現の使い方の勉強中ですWEBも参考させていただいているのですが    今回の質問は・・・(4)です   (1)置換前 .*削除 削除が一番最後の所から削除を含む前を選択   (2)置換前 削除.* 削除が一番最初の所から削除を含む後を選択   (3)置換前 ^.*?削除 削除が一番最初の所から削除を含む前を選択   (4)     削除が一番最後の所から削除を含む後を選択 例・正規表現である削除が行の二か所以上あるとき最後に出てくる削除より後を削除したい・  この場合「削除」が二か所ありますが後に出てきた「削除」より後を削除したいのです  宜しくお願いします。

  • さくらエディタでの正規表現マクロ

    正規表現でタブ区切りの文字列の順序を入れ替える作業を試みています。 AAA BBB CCC PPP QQQ RRR のような文字列を BBB CCC AAA QQQ RRR PPP のように2列目、3列目、1列目のように順番を入れ替えたいです。 VBScriptで1行ずつ読み込み、タブを区切り文字として、配列に放り込み、配列の順番を指定して出力すればなんとか対応できるのですが、どうしてもさくらエディタで実装したいのですが、正規表現を駆使して対応できないものでしょうか? 検索により、パターンにマッチする部分は正規表現で2列目とか3列目というのは書けるのですが、パターンマッチだけで、置換後の文字列に変数などを使用できず苦しんでいます。 正規表現を用いていれればいいし、無理なら、さくらエディタで秀丸のように配列やFOR文などを使いたいのですが、使い方がわからず、質問しました。 ご存知の方がいらっしゃれば、教えてください。

  • サクラエディタのコマンドで正規表現置換したい

    サクラエディタ(Ver 2.2.0.1)で日本語文字をすべて全角空白に置換しようと思い、以下のコマンドを実行しました。 ※画面上は改行しているかもしれませんがもちろん1行のコマンドです。 sakura.exe -GREPMODE -GKEY="[^\x{01}-\x{7E}]" -GREPR=" " -GFILE="sample.txt" -GFOLDER="C:\temp" -GOPT=R すると、なぜか各行で最初の日本語しか置換されません。 複数ファイルの処理も想定しているのでメニューではなくコマンドラインでやろうとしています。 実際にサクラエディタでうまく置換できる方はやり方を教えてください。

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

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

  • 正規表現で特定文字列を含まない行を削除したいのですが

    テキストエディタ mi で正規表現のより「※補足」という文字列を含む行だけ残して他の行を削除しようとしています。 具体的には、 検索文字列 ^(?!.*\※補足).*$ 置換文字列            ← 空白 としてやっているんですが、例えば   なんとかかんとかで何やらが何として…   ※補足:よくわかりません   ※補足:質問します というテキストを上の方法で全置換すると何も起きません。 そこで試しに 検索文字列 ^(?!.*\※補足).*$ 置換文字列 ----- としてみました。 この場合、本当なら   -----   ※補足:よくわかりません   -----   ※補足:質問します となることを期待していたのですが、実際は   -----なんとかかんとかで何やらが何として…   ※補足:よくわかりません   -----   ※補足:質問します となってしまい、要するに「※補足」という文字列が含まれない行は正しく見つけてくれるものの、含まれていない行については、その行丸ごとを置き換えるのではなく行頭に置換文字列を付加するだけになってしまいます。 これは、何がどう悪いのでしょうか? ちなみに、こちらのサイトで「テキストで特定の文字列を含む行を削除」とQ&Aを検索すると、私の場合で言えば「^.*※補足.*\n」→「」(空白)という置換えで可能というご回答が見つかるのですが、miの場合、これでは「※補足」という文字列が含まている行も含まれていない行も見つけてくれませんでした。 どう直せば目的が達成されるか教えて頂けないでしょうか? どうかよろしくお願い致します。

    • ベストアンサー
    • Mac
  • 偏芯軸加工時の生爪の作り方

    いつもお世話になります。 NC旋盤にて、初めて偏芯軸を加工したいのですが、生爪の成形方法が よくわかりません。 ワーク図面は、外径40mmで片側半分が2mm偏芯しています。 自分の考えた生爪成形方法は、 1 NC旋盤上で30mmぐらいまでボーリングする。 2 同じ8インチのチャックをフライステーブル上に置き、1の生爪をセットする。 3 ピックで芯だしして、芯より2ミリづらす。 4 フライス上で40mmまでボーリングする。 こうすれば偏芯軸はできそうなのですが、困ったことに同じ8いんちチャックが社内にありません。 上記以外のいい方法はあるのでしょうか? また最終手段として、NC旋盤のチャックをはずしてフライスにもっていくことは可能なのでしょうか? ちなみに私自身は機械の知識はまったくありません。

  • エディタの連続変換について

    通常使用しているエディタはサクラエディタと秀丸ですが、 文章の定型変換を自動化させたく「変換リストによる連続置換 Ver.3.00 - 秀まるおのホームページ」 を使ってみたのですが、正規表現と通常の置換えが混在しているリストではうまく変換できませんでした。 正規表現と正規表現ではない普通の置換えをリストにしたものを自動で連続変換してくれるマクロ的なものを持っているエディタまたはアドオン的なものがあったら知りたいのです。 変換例を示すと ^○○\nを削除 ○○Xを○Xに置換え ^\nを削除 YY\nを削除 このような組み合わせが15組程あり、年に数回内容が変更されます。 これを置換えで手作業で行っています。 (変換例は秀丸の正規表現で記載しました) 秀丸やサクラエディタにこだわらずにこのような作業を自動化できたらと思っています。 ちなみに変換文章は多いときは4000行程度少ないときで500行程度です。

  • エクセルの文字列を空白で文字数を揃えたい

    皆様のお知恵を拝借したく書き込んでいます。 どうか宜しくお願いいたします。 エクセルにあるデータをカンマ区切りCSVに したいと思っております。 *例 1,1,1,3,1,2,11,・・・ これに数値を空白で埋めて四文字(0001,等)にさせたいのですが、 どのような方法が可能でしょうか? ・試したこと 1、サクラエディタでの正規表現 でも、置換後の文字列を動的に渡せるのかわからなくて失敗。 2、セルの表示形式 数値の桁数によって変化させる方法がわからず 3、エクセルマクロ LEN関数を使ってループさせれば可能? (時間がかかりそうです) 以上、宜しくお願いします。

専門家に質問してみよう