
こんにちは
秀丸の正規表現でうまくいかないことがあって質問します。
テキストファイルの中で複数行にわたるコメントアウト部分があります。
/* たとえばここから
ここまでの間が
コメントアウトに
なっている
複数行です */
こうした複数行にわたるコメントアウトを一括で削除したいのですがうまい方法が見つかりません。
「/\*.*\n」で1行目を指定して、その後に続けて「(.*[^(*/)]\n)*」としてみました。
「([^(*/)]*\n)*」は、任意の文字列の後に */ 以外の文字に続いて改行があるパターンを複数回指定しているつもりですが、上記の例だと「/\*.*\n([^(*/)]*\n)*」でヒットするのは「コメントアウトに」の部分までです。この正規表現の最後のアスタリスクを{0,}や{3,10}などに変えても結果は同じです。これを「/\*.*\n([^(*/)]*\n)*([^(*/)]*\n)*」のように繰り返すともう1行多くヒットするのですが、繰り返し回数を無制限にして一括で削除する方法にはなりません。
改行をまたぐと最長マッチにならないのでしょうか?
あるいは、いったん改行をファイルに出現しない文字(たとえば★など)に置き換えて、/*から*/を削除した後で★を改行に戻すのが実践的なやりかたなのでしょうか?
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
すみません、No.3のやり方では
/*comment*/
program
/*comment*/
の場合のprogram行まで削除してしまいますね。
量子指定* を控えめマッチ指定*?に変更してお試しください。
No.3
- 回答日時:
秀丸のヘルプの正規表現の記述によるとVer8.00以降で、かつ、コメント行の最大値に制限がありますが以下でできそうです。
(?#maxlines:10)/\*(.*\n)*.*\*/
この例ではmaxlines:10としているので改行が10個、つまり最大11行のコメントまで削除可能です。
ご参考まで。

No.2
- 回答日時:
直接的な回答ではありませんが、コメントを削除するツールがいくつかありますので、それを使用されてはいかがでしょうか。
http://www.vector.co.jp/soft/win95/prog/se451469 …
http://www.vector.co.jp/soft/win95/prog/se414076 …
上記はC/C++のコメント削除用ツールです。
No.1
- 回答日時:
秀丸の正規表現は詳しくないから何が起きているのかとかどう指定すればいいのかとかはわからんけど, 少なくとも
「([^(*/)]*\n)*」
が
「任意の文字列の後に */ 以外の文字に続いて改行があるパターンを複数回指定している」
ことにならないことは分かる.
[^(*/)]
は
「(, *, /, ) 以外の文字」
って意味だから.
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) テキストエディタで複数行にわたる文字列の行頭に番号を振る方法 4 2023/03/11 12:57
- フリーソフト サクラエディタの正規表現(grep機能)の使い方 3 2022/06/22 10:29
- Excel(エクセル) Excelの複数置換はSUBSTITUTEを重ねるしかない? 9 2022/05/08 11:25
- オープンソース csvデータのダブルクォーテーションで囲まれた文字内にあるカンマを削除したい 3 2022/09/02 15:17
- Excel(エクセル) PowerQueryに詳しい方教えてください(Office365) 1 2022/07/24 21:11
- Access(アクセス) AccessVBAで任意の複数リンクテーブルをAccessVBAを動かす際に削除したいと考えておりま 1 2022/11/17 15:45
- Excel(エクセル) エクセルの数式で教えてください。 2 2023/02/10 11:41
- Excel(エクセル) エクセルで重複データから重複を削除して指定の列に抽出したい 11 2022/05/11 11:26
- 英語 関係代名詞「非制限用法」が説明する先行詞が無冠詞複数形の場合「一般的総称」と見なすことの可否について 10 2022/07/20 10:19
- Visual Basic(VBA) 3つの条件を指定してVBAで行を削除したい 条件1:分類1が重複 条件2:分類2が重複 条件3:個数 6 2022/06/24 11:07
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAのコマンドボタンの文字列の...
-
ソースコードの1行が長いとき...
-
エスケープ文字の復帰(¥r)と...
-
テキストボックス行の桁数を制...
-
グレープシティのSPREAD...
-
改行について
-
LaTeX: captionの中で改行した...
-
エディットボックスで改行
-
【VBA】エクセルで最後の不要な...
-
DBからのデータを改行して表示
-
vb.netでのリッチテキストボッ...
-
エクセルVBA 文字列領域が不足...
-
C# DataGridViewのセルを改行禁...
-
アスキーコードへの変換につい...
-
メールの先頭の改行
-
JavaMail,本文中の改行について
-
Excel VBAからBeckyを起動して...
-
最終行の改行について
-
g77でのエラー
-
C# csvでセル内で改行するには
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAのコマンドボタンの文字列の...
-
ソースコードの1行が長いとき...
-
エスケープ文字の復帰(¥r)と...
-
改行について
-
エクセルVBA 文字列領域が不足...
-
最終行の改行について
-
テキストボックス行の桁数を制...
-
【VBA】エクセルで最後の不要な...
-
awkで改行を除いて文字列を抜き...
-
グレープシティのSPREAD...
-
VBAでCSVをExcelに取り込む時に...
-
秀丸の正規表現で複数行にわた...
-
C# DataGridViewのセルを改行禁...
-
JavaMail,本文中の改行について
-
テキストファイルから改行コー...
-
vb.netでのリッチテキストボッ...
-
ラベル(スタティックテキスト)...
-
jsp 改行コードで改行させて表...
-
COBOLの改行
-
文字列型変数に1024を超えた文...
おすすめ情報