- 作成者投稿
- 2007年6月6日 10:04 am #4408arereメンバー
こんにちは。
C/C++のソースコードの編集をしていて
}
else{
という記述を
} else {
と修正するために、検索文字として
}[ t]*n[ t]*else[ t]*{
という指定をしてファイルから検索・置換を実行しても何もヒットしません。
検索文字の最初の「}」を削ると
大量にヒットし、その中には「}[ t]*n[ t]*else[ t]*{」
にマッチするものもあり、当該ファイルを開いてファイル内検索・置換では「}[ t]*n[ t]*else[ t]*{」できちんとマッチします。かといって
}
if(condition){
を検索するために
}[ t]*n[ t]*if.*{
といった指定や
}[ t]*n[ t]*if[.]?.*{
指定をファイルから検索した場合はきちんとマッチします。ファイルから検索で
}[ t]*n[ t]*else[ t]*{
ではなく、
}[ t]*n[ t]*else{
で指定しても該当する行を含むファイルがあるもののマッチしませんが、
}[ t]*n[ t]*else[ t]*
では該当行にマッチします。
:-(環境はVista Ultimate x64
EmEditorは 6.00.4 x64日本語版です。2007年6月6日 2:31 pm #4411匿名ゲストもし、対象ファイルがCRLFの改行コードなら、
ファイルから検索置換は、CR と LF を区別するので、n
↓
rnこうすれば、マッチするかもしれません。
先頭の}をはずすと、[ t]*n[ t]*else[ t]*{
先頭の正規表現が空文字でもいいため、nでもマッチするのです。
ファイルの改行コードを確認してみてください。
改行コード気にしたくない場合は、[rn]+
(rn|[rn])などが、マクロのJavaScriptなんかも同様で、
正規表現で便利ですよ。2007年6月7日 7:36 am #4414arereメンバーperlerさん、フォロー有り難うございます。
ファイルからの検索・置換時、CRとLFを区別するという仕様を確かに過去に見掛けた記憶がありますが、すっかり失念していました。
御陰様で目的の処理をおこなうことが出来ました。
有り難うございました。 - 作成者投稿
- このトピックに返信するにはログインしてください。