(^(^abc))
「肯定先読み」とは文字列を消費しないで、後述の文字列を先読みすることです。
先読みした文字列は消費しないので、以下のような動作を実現できます。
(^(^abc))
(^[^xyz])
<body
link="#0000EE"
vlink="#0000EE"
>
body要素のlink属性にマッチさせる表現を考えます。
(link属性, vlink属性 の順番は任意とします。)
<body\s[^>]++link=
と記述すると、vlink属性にマッチしてしまう可能性があります。
これはlink属性の手前の空白にマッチさせれば、回避できますね。
が、<body\s[^>]++
を生かしたまま、link属性の前に空白を入れることは出来ません。
そこで、<body
の後ろの空白文字は「肯定先読み」によって消費せずにテストし、link=
の手前で空白文字を消費させます。
結果的に、\s
を二度テストすることになりますが、これで意図通りに動作します。
<div
align='center'
class='ad'
>
...</div>
にスタイルシートの display: none を付加する表現を考えます。<div
align=
'center'
class='ad'
>
1つには、div(\s[^>]++class=$AV(ad))\0
として、一部分をローカル変数に取り込み、置換テキストで変数の値を出力する手が考えられます。
が、変数に取り込んだ文字列をそのまま出力している、という点においては無駄な処理がありますね。
[Patterns] Name = "Kill div ad" Active = TRUE Limit = 128 Match = "<div(^(^\s[^>]++class=$AV(ad)))" Replace = "<div style='display: none'"
このように、肯定先読みで後述の文字列を消費せずにチェックだけ行うと、置換テキストがスッキリします。