![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
こんにちは
秀丸の正規表現でうまくいかないことがあって質問します。
テキストファイルの中で複数行にわたるコメントアウト部分があります。
/* たとえばここから
ここまでの間が
コメントアウトに
なっている
複数行です */
こうした複数行にわたるコメントアウトを一括で削除したいのですがうまい方法が見つかりません。
「/\*.*\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行のコメントまで削除可能です。
ご参考まで。
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_14.png?e8efa67)
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行が長いとき...
-
最終行の改行について
-
コンボボックスの項目中に改行を
-
VBSにて改行コードの検出・置換
-
ExcelVBAでメールを作成してメ...
-
グレープシティのSPREAD...
-
C# DataGridViewのセルを改行禁...
-
Excel VBAからBeckyを起動して...
-
JavaMail,本文中の改行について
-
COBOLの改行
-
Excel VBS、ADODB.Streamで改行
-
VBA初心者です。txtファイルの...
-
C言語について。
-
文の改行
-
C++で空Enterの入力を判...
-
エクセルVBA 文字列領域が不足...
-
テキストファイルから1文字ず...
-
エスケープ文字の復帰(¥r)と...
-
delphi でのコード上でTab を入...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAのコマンドボタンの文字列の...
-
ソースコードの1行が長いとき...
-
エスケープ文字の復帰(¥r)と...
-
COBOLの改行
-
C++で空Enterの入力を判...
-
エクセルVBA 文字列領域が不足...
-
改行について
-
改行を読み飛ばす
-
最終行の改行について
-
【VBA】エクセルで最後の不要な...
-
C++でのCRLFについて
-
テキストファイルから改行コー...
-
コンボボックスの項目中に改行を
-
ファイルから読み取った改行文...
-
C# DataGridViewのセルを改行禁...
-
ラベル(スタティックテキスト)...
-
改行コード(CR/LF)の設...
-
jsp 改行コードで改行させて表...
-
JavaMail,本文中の改行について
-
文の改行
おすすめ情報