&&&これは言葉で説明するだけでは解りづらいと思いますので、例を挙げます。
<img src="..." height="50" width="100" />
上のソースの height属性, width属性 にマッチさせるフィルタを考えます。
ただし、height属性, width属性 の順番はランダムで規則性がありません。
この場合はAND関数を使う事で、どちらの順番でもマッチさせる事ができます。
[^>]++height=$AV(50) と [^>]++width=$AV(100)[^>]+> で同じ場所を2度チェックする事で解決しています。
ここで [^>]+> に注目して下さい。
AND関数を使った場合、Proxomitronは2つのパターンの内、「より多く消費した方」に合わせて、文字列を消費します。
従って、より多くの文字列を消費した [^>]++width=$AV(100)[^>]+> の分だけ文字列を消費することになります。
# この場合は、OR関数で条件分けする手もありますので、用途を考えて使い分けて下さい。
ダブルアンバサンドはAND関数よりも更に複雑です。
ダブルアンバサンドは左のパターンと右のパターンを同じだけ消費しなければならないからです。
これはBoundsと同じ働きをするので、Boundsを使った経験のある方なら理解しやすいでしょう。
次のhtmlソースのimg要素をURI指定でマッチさせるフィルタを考えてみます。
htmlソース<img src="http://adserver.com/ad.gif" height="50" width="100" />
<img\s[^>]++src= という書き方もあるが、そんな複雑な書き方はしたくない。
そんな時に、ダブルアンバサンドは有効に使えます。
<img\s[^>]+>&&*src=$AV(http://adserver.com/ad.gif)*
まず、<img\s[^>]+> まで消費します。
次に、左のパターンで消費した範囲で src=$AV(http://adserver.com/ad.gif) を探します。
このように、同じ場所を2度探すことでフィルタの表現を簡単なものにすることが出来ます。
反面、<img\s[^>]++src=$AV(http://adserver.com/ad.gif)[^>]+> のように一度に検索する表現と比べて、遅くなるという欠点も併せ持っています。
速度を重視するか、簡易的な表現を求めるか、を考えて選択すると良いでしょう。
# ダブルアンバサンドはAND関数よりも消費する文字列が多いので、AND関数よりも遅くなります。