特定の対応する括弧を除外したいNo.41755
ANACOSTIA さん 25/03/04 10:50
 
 対応する括弧を強調表示や移動の機能がありますが、この対応する括弧から、"["
と"]"に挟まれた括弧と直前に"\"がある括弧を除外できないでしょうか?
 つまり、[(]、[)]、\(、\)を無視した上で、対応する括弧を強調表示や移動ができ
ないでしょうか?

[ ]
RE:41755 特定の対応する括弧を除外したいNo.41757
秀丸担当 さん 25/03/04 12:49
 
おそらく正規表現の場合のことだと思いますが、正規表現の文字列内の除外や、特定
の条件での除外をすることは難しいです。
文字定数として認識されている場合は、文字定数そのものは除外され、文字定数の外
にある括弧であれば可能です。
例えば"\("が文字定数の色付けになっているとして、("\(")といったような外側の括
弧は可能です。
"(\()"といった文字列内の括弧はできないです。

[ ]
RE:41757 特定の対応する括弧を除外したいNo.41760
ANACOSTIA さん 25/03/04 18:31
 
 hilightファイルの編集にあたり、表記がどんどん複雑になり、何か良い方法が無
いか悩んでいたところでした。
 最外側の“[”〜“]”や“\(”〜“終了文字列”、“\)”〜“終了文字列”の外側
でのみ有効というだけでも大分助かります。
 入れ子の内側で、改めて同様の動作が将来実現するのかなぁと、期待しております。

[ ]
RE:41760 特定の対応する括弧を除外したいNo.41764
igus さん 25/03/06 22:09
 

ひとつ思いついたのですが"[(]"、"[)]"、@"\("、@"\)"を普段は使わない絵文字とか
に一時的に変換し退避させ、編集後に復元するというのはどうでしょう。

//括弧の変換と復元.mac
setmenudelay 700;
mousemenu
"&H 変換",   // 1
"&F 復元";   // 2
#r=result;
if(#r==1){
  replaceallfast "[(]","⏩";
  replaceallfast "[)]","⏪";
  replaceallfast @"\(", "⏫";
  replaceallfast @"\)", "⏬";
}else if(#r==2){
  replaceallfast "⏩","[(]";
  replaceallfast "⏪","[)]";
  replaceallfast "⏫",@"\(";
  replaceallfast "⏬",@"\)";
}
endmacro;

[ ]
RE:41764 特定の対応する括弧を除外したいNo.41765
igus さん 25/03/06 22:10
 
絵文字が化けましたが意図は察してください^^;

[ ]
RE:41765 特定の対応する括弧を除外したいNo.41766
秀まるお2 さん 25/03/07 08:35
 
思いつきですが、正規表現の処理をしているHmJre.dll側に、「\」を使った表現(エ
スケープシーケンスと呼ぶと思う)を何かヒットしない文字に変換してからマッチン
グさせて、マッチングが終わったら元に戻すような特殊な機能を追加する作戦がある
といいかもしれません。

「エスケープシーケンスにヒットしないようにする」
「Avoid hitting escape sequences」

って意味で、

(?#avoidescseq)

みたいな指定をするとヒットしないようにするとか。

(?#avoidescseq)".*"

みたいにすると、"xxxx\"xxx" 全体にヒットするとか。

[ ]