|
お世話になります。
少し面倒な内容になりますが、実際に出会った例を基にしています。
英文ファイル中の「London / Sheldon / Wimbledon / abandon / Don 以外の
英文字列における末尾の "don"」(例 attendon や vacadon 末尾の "don")を
検索するために以下の検索文字列を使用。
"(?<!\<(Lon|Shel|Wimble|aban|))don(?!['a-z])";
あるフォルダから上のような "don" を grep して、ヒットした "don" を強調
するために以下のようなマクロを使用。(あえて grep文で hilight パラメータ
を使わずに、自前の強調表示ファイルで強調しています。)
$str = "(?<!\\<(Lon|Shel|Wimble|aban|))don(?!['a-z])";
$fld = "C:\\〜〜〜\\〜〜〜";
$kyouchou = "C:\\〜〜〜\\〜〜〜\\〜〜〜.hilight";
grep $str, "*.*", $fld, regular, nocasesense, subdir, nohilight;
loadhilight $kyouchou, 0, 1;
endmacro;
このときの強調表示ファイルの中身は以下の1行のみです。
25,(?<!\<(Lon|Shel|Wimble|aban|))don(?!['a-z])
[25 = 1(強調 1) + 8(大文字/小文字を区別しない) + 16(正規表現)]
ここまでは grep も強調表示も問題なく動きます。
London / Sheldon ... などの除外する単語をだんだんふやしていき、検索
文字列および対応する強調表示ファイルの中身を以下のようにしたとき、
grep はできましたが、強調表示がされなくなりました。
$str = "(?<!\\<(Abing|Armaged|Basil|Bin|Bran|Bur|Caly|Claren|Cleve|Con|Cory
|Croy|Eg|El|Espa|Farring|Gray|Gor|Had|Hal|Hamble|Hay|Hen|Hern|Hunting|Lan|La
ng|Lon|Long|Lyn|Mal|Par|Rear|Ron|San|Shel|Snow|Swin|Trog|Willing|Wimble|Wort
hing|Yea|aban|bour|cela|cor|guer|ten|))don(?!['a-z])";
25,(?<!\<(Abing|Armaged|Basil|Bin|Bran|Bur|Caly|Claren|Cleve|Con|Cory|Croy|E
g|El|Espa|Farring|Gray|Gor|Had|Hal|Hamble|Hay|Hen|Hern|Hunting|Lan|Lang|Lon|
Long|Lyn|Mal|Par|Rear|Ron|San|Shel|Snow|Swin|Trog|Willing|Wimble|Worthing|Ye
a|aban|bour|cela|cor|guer|ten|))don(?!['a-z])
縦棒数:49
強調表示ファイルの中で使用する縦棒の数が多すぎるせいではないかと推測し、
grep の検索文字列 $str はそのままにし、強調表示ファイル用の検索文字列に
おける(前方不一致定義内の)選択肢を1つずつ減らしていきながら、上記マクロを
実行していくと、以下の4つを除いた段階で強調表示がされるようになりました。
"Abing|Armaged|Basil|Bin|"
つまり、強調表示ファイルの中身を以下のようにすると強調表示されました。
25,(?<!\<(Bran|Bur|Caly|Claren|Cleve|Con|Cory|Croy|Eg|El|Espa|Farring|Gray|G
or|Had|Hal|Hamble|Hay|Hen|Hern|Hunting|Lan|Lang|Lon|Long|Lyn|Mal|Par|Rear|Ro
n|San|Shel|Snow|Swin|Trog|Willing|Wimble|Worthing|Yea|aban|bour|cela|cor|gue
r|ten|))don(?!['a-z])
縦棒数:45
この1例だけから考えると「縦棒の数が45個までなら強調表示ができるが、
それを超えるとできなくなる」ということになるかと思います。
通常の検索と違って、強調表示ファイルの場合、縦棒の使用数に制限がある
のでしょうか?
この件に関する参照箇所などありましたらご教示お願いします。
使用環境:
Windows 7 Home Premium (32bit)
秀丸エディタ:Ver. 8.21 Beta 9
|
|