
こんにちは
秀丸の正規表現でうまくいかないことがあって質問します。
テキストファイルの中で複数行にわたるコメントアウト部分があります。
/* たとえばここから
ここまでの間が
コメントアウトに
なっている
複数行です */
こうした複数行にわたるコメントアウトを一括で削除したいのですがうまい方法が見つかりません。
「/\*.*\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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAのコマンドボタンの文字列の...
-
ソースコードの1行が長いとき...
-
テキストファイルから改行コー...
-
エスケープ文字の復帰(¥r)と...
-
VBAでCSVをExcelに取り込む時に...
-
jsp 改行コードで改行させて表...
-
C# DataGridViewのセルを改行禁...
-
ファイルから読み取った改行文...
-
C++で空Enterの入力を判...
-
C# csvでセル内で改行するには
-
Excel VBS、ADODB.Streamで改行
-
エクセルVBA 文字列領域が不足...
-
改行コード(CR/LF)の設...
-
CSVファイルの改行コード判別
-
エディットボックスで改行
-
delphi でのコード上でTab を入...
-
「続行するには何かキーを押し...
-
VBSにて改行コードの検出・置換
-
選択したセルでダブルクリック...
-
バイナリファイルに改行コード...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAのコマンドボタンの文字列の...
-
ソースコードの1行が長いとき...
-
エスケープ文字の復帰(¥r)と...
-
jsp 改行コードで改行させて表...
-
改行について
-
VBAでCSVをExcelに取り込む時に...
-
【VBA】エクセルで最後の不要な...
-
ラベル(スタティックテキスト)...
-
ファイルから読み取った改行文...
-
Excel VBAからBeckyを起動して...
-
C++で空Enterの入力を判...
-
JAVA Spring 改行コードを含む...
-
変数の中の改行コードをBRタグ...
-
秀丸の正規表現で複数行にわた...
-
awkで改行を除いて文字列を抜き...
-
エクセルVBA 文字列領域が不足...
-
vb.netでのリッチテキストボッ...
-
グレープシティのSPREAD...
-
COBOLの改行
-
最終行の改行について
おすすめ情報