HTMLで、<img...>タグの中にaltを含まないNo.20933
のんぴ さん 06/02/18 16:36
 
はじめまして、秀丸マクロ・検索の初心者です。
正規表現で苦戦しております。

htmlファイルにおいて、imgタグの中で、alt属性を設定していないものを検索したい
と考えております。
alt属性を指定しているものというのは、
<img .*(alt)[^>]*>
というので、検索ができると思うのですが、altを指定して「いない」というのを検
索できません。
どなたか、ご支援下さいませんでしょうか。

[ ]
RE:20933 HTMLで、<img...>タグの中にaltNo.20934
アルビレオ さん 06/02/18 19:17
 
ユーザーのアルビレオです。

>htmlファイルにおいて、imgタグの中で、alt属性を設定していないものを検索したい
>と考えております。
>alt属性を指定しているものというのは、
><img .*(alt)[^>]*>
>というので、検索ができると思うのですが、altを指定して「いない」というのを検
>索できません。
>どなたか、ご支援下さいませんでしょうか。

一般的に単独の正規表現で「あるキーワードを含まない」といった条件を設定す
ることは難しいです。
さらに src="..." などの部分に alt という文字が含まれている可能性もあるの
でより複雑になります。
そういうわけで秀丸エディタ単独で実現するよりも、HTML文法チェックツールを
呼び出すようなマクロを組んだ方が現実的かもしれません。

参考: http://standards.mitsue.co.jp/archives/000018.html

[ ]
RE:20934 HTMLで、<img...>タグの中にaltNo.20935
Iranoan さん 06/02/18 20:07
 
 のんぴさん今日は、Iranoan です。
 念の為お断りしておくと、開発者とは何の関わりも無い単なる一ユーザです。
> 一般的に単独の正規表現で「あるキーワードを含まない」といった条件を設定す
> ることは難しいです。
 アルビレオさんの仰るとおりです。ただマクロならどうとでも成ります。例
えば次のマクロです。
//--------------------------------------------------------------------
#reg_search = searchmode;
openreg "CURRENTUSER", "Software\\Hidemaruo\\Hidemaru\\Env";
writeregnum "SelectFound",1;
envchanged;

#x = x;
#y = y;

while( 1 ){
  escape;
  searchdown "<img[ \t\n].+?>", regular, nocasesense;
  if( !result ){
    moveto #x, #y;
    break;
  }
  while( 1 ){
    searchdown2 "\\<alt=", regular, nocasesense, inselect;
    if( !result ){
      #x = x;
      #y = y;
      goto End;
    }
    if( colorcode&31 == 15 )break;
  }
}

End:
  openreg "CURRENTUSER", "Software\\Hidemaruo\\Hidemaru\\Env";
  writeregnum "SelectFound",#reg_search;
  envchanged;
  closereg;

[ ]
RE:20935 HTMLで、<img...>タグの中にaltNo.20936
のんぴ さん 06/02/18 22:45
 
アルビレオ様、Iranoan様 早速のご返答誠にありがとうございました。
参考サイトのみならず、マクロのソースまで、ご提示下さいまして、大変恐縮してお
ります。

ないものに合致させるということが難しいというのをしっかりと気にとめて、外部
ツールなり、より効率的なマクロを組めるようにするなり、勉強させていただきます。

ありがとうございました。

[ ]
RE:20934 HTMLで、<img...>タグの中にaltNo.20937
Arimac さん 06/02/19 01:06
 
BRegIf.DLLでは「&」(絞込み検索)、「~」(非マッチ部分の検索)とか出来たりします
(^^;
「<img.*?>&~.*alt.*」とか

でも
>さらに src="..." などの部分に alt という文字が含まれている可能性もあるの
>でより複雑になります。
これは無理です(^^;

HMJRE.DLLでもパターンの否定(grep -v 相当)は出来ても良いと思うのですが(^^;

[ ]
RE:20937 HTMLで、<img...>タグの中にaltNo.20938
のんぴ さん 06/02/19 11:25
 
Arimac様 貴重な情報ありがとうございました。

>BRegIf.DLLでは「&」(絞込み検索)、「~」(非マッチ部分の検索)とか出来たりしま
>す(^^;
>「<img.*?>&~.*alt.*」とか

試してみました。
こんな検索が実際にできるのを見ると感動的です。

いろいろな分野で、日夜工夫をされている方が大勢いるのは、とてもすばらしいこと
ですね。

皆様、これからもよろしくお願いいたします。


[ ]
RE:20933 HTMLで、<img...>タグの中にaltNo.20939
ENCODINGSHIFTJIS さん 06/02/20 10:28
 
否定は難しい、正規表現は非直感的だ

<img(?!(.*?alt=)).*?>

でやってみました。
Perl6 のルールならうまくいくようになるのか?

[ ]