<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7737653290432592579</id><updated>2011-04-22T05:08:33.792+09:00</updated><category term='モバイル'/><category term='フィルタ'/><category term='拡張'/><category term='Jane'/><category term='Firefox'/><category term='ユーザー定義関数'/><category term='Proxomitron'/><category term='CSS'/><category term='GreaseMonkey'/><category term='NGEx'/><category term='ReplaceStr'/><category term='userchrome.js'/><category term='IE'/><category term='不具合'/><category term='JavaScript'/><category term='正規表現'/><category term='Blogger'/><category term='Google'/><title type='text'>thinkのScrapBook</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://thinkarc.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://thinkarc.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>think</name><uri>http://www.blogger.com/profile/01082418605668142158</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>33</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7737653290432592579.post-2368549467949102133</id><published>2008-10-26T01:53:00.002+09:00</published><updated>2008-10-26T20:13:33.570+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Proxomitron'/><category scheme='http://www.blogger.com/atom/ns#' term='フィルタ'/><title type='text'>Proxomitronでよく使われる表現でクオートされた "&lt;&gt;" に誤爆する問題に対処する</title><content type='html'>&lt;p&gt;元ネタは&lt;a href="http://pc11.2ch.net/test/read.cgi/software/1223923192/45n"&gt;「Proxomitron フィルター作成スレッド Part10」の45氏&lt;/a&gt;。&lt;br /&gt;
(ISP規制で2chに投稿できないので、こちらに書きました。)&lt;/p&gt;

&lt;h4&gt;問題の概要&lt;/h4&gt;

&lt;p&gt;45氏が提起された問題を以下にまとめます。&lt;/p&gt;

&lt;ul&gt;
 &lt;li&gt;Proxomitronでよく使われる表現「&lt;code&gt;&amp;lt;a\s[^&amp;gt;]++href=&lt;/code&gt;」は「&lt;code&gt;&amp;lt;a onclick="for(i=0;10&amp;gt;i;i++){...}"&amp;gt;&lt;/code&gt;」に誤爆する&lt;/li&gt;
 &lt;li&gt;「&lt;code&gt;&amp;;lt;a title="&amp;lt;test&amp;gt;"&amp;gt;&lt;/code&gt;」は「&lt;code&gt;&amp;;lt;&amp;gt;&lt;/code&gt;」をHTMLエンティティ化すれば対処できる&lt;/li&gt;
 &lt;li&gt;JavaScriptコードはHTMLエンティティ化すると動作しない。どうしよう？&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;解決法：初めからクオートされた "&amp;;lt;&amp;gt;" に対応できるフィルタにする&lt;/h4&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;a\s[^&amp;gt;]++href=&lt;/code&gt; を &lt;code&gt;&amp;lt;a(\s[a-z]+(=$AV(*)|(^=)))++\shref=&lt;/code&gt; に置換することで、対応します。&lt;/p&gt;

&lt;pre class="thinking_code"&gt;&lt;code&gt;[Patterns]
Name = "Kill &amp;lt;a&amp;gt; ad (anti quoted &amp;lt;&amp;gt;) [2008/10/26] test1"
Active = TRUE
URL = "$TYPE(htm)"
Limit = 256
Match = "$NEST(&amp;lt;a(^(^\s)),"
        "(\s[a-z]+(=$AV(*)|(^=)))++\shref=$AV(http://$LST(AdList)*)*"
        ",&amp;lt;/a&amp;gt;)"
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;この記法、汎用性はありますが美しいコードではないのがネックです。&lt;/p&gt;

&lt;h4&gt;そもそも属性値に "&amp;;lt;&amp;gt;" と書いているサイトはどれぐらいあるのか&lt;/h4&gt;

&lt;p&gt;「&amp;gt;」と書いているサイト、「&amp;amp;gt;」と書いているサイト、どちらも見たことがありますが、母数が少ないためにどちらが多いとは断定し難い状態です。&lt;br /&gt;
(どちらかといえば、しっかりしたHTMLが増えてきていて 「&amp;amp;gt;」と書いているサイトが多い印象はあります。)&lt;/p&gt;

&lt;p&gt;JavaScriptに限定すれば、&lt;code&gt;&amp;lt;a onclick="func();"&amp;gt;&lt;/code&gt; (関数埋め込み型) や &lt;code&gt;&amp;lt;a id="TEST"&amp;gt;&lt;/code&gt; (外部スクリプトでイベントハンドラを割り当てる) と比べて、&lt;code&gt;&amp;lt;a onclick="for(i=0;10&amp;gt;i;i++){...}"&amp;gt;&lt;/code&gt; が圧倒的に少ない、のは間違いないと思います。&lt;br /&gt;
JavaScriptライブラリの影響で、一昔前と比べて手打ちでコードを入力する機会が減っているのかも。&lt;/p&gt;

&lt;h4&gt;結論：結局どう対応すればいいのか&lt;/h4&gt;

&lt;p&gt;完全対応を目指すなら、既存のフィルタをクオートされた "&amp;;lt;&amp;gt;" に対応できるフィルタに修正するのが一番。&lt;br /&gt;
ですが、すべてのフィルタを修正していくのは大変です。&lt;br /&gt;
経験上、クオートされた "&amp;lt;&amp;gt;" を見る機会がほとんどないので、問題が発生したときに原因となるフィルタを対処療法的に修正していくだけで十分だと思います。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7737653290432592579-2368549467949102133?l=thinkarc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thinkarc.blogspot.com/feeds/2368549467949102133/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7737653290432592579&amp;postID=2368549467949102133' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default/2368549467949102133'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default/2368549467949102133'/><link rel='alternate' type='text/html' href='http://thinkarc.blogspot.com/2008/10/proxomitron.html' title='Proxomitronでよく使われる表現でクオートされた &quot;&lt;&gt;&quot; に誤爆する問題に対処する'/><author><name>think</name><uri>http://www.blogger.com/profile/01082418605668142158</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7737653290432592579.post-2560785897895757542</id><published>2008-09-28T23:09:00.004+09:00</published><updated>2008-09-29T02:13:03.249+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='GreaseMonkey'/><category scheme='http://www.blogger.com/atom/ns#' term='拡張'/><category scheme='http://www.blogger.com/atom/ns#' term='Firefox'/><title type='text'>AutoPagerize用SITEINFO + SITEINFOの書き方 まとめ</title><content type='html'>&lt;p&gt;かねてより試してみたかったGreaseMonkeyスクリプト「AutoPagerize」が非常に便利だったのでWedata未登録のSITEINFOを書いてみました。&lt;/p&gt;


&lt;h4&gt;AutoPagerize用SITEINFO&lt;/h4&gt;

&lt;pre class='thinking_code'&gt;&lt;code&gt;var SITEINFO = [
 {
  name:         'ブラック会社に勤めてるんだが、もう俺は限界かもしれない',
  url:          '^http://ueharasan\.y\.ribbon\.to/html/',
//  Unicodeエスケープ前の文字列 (Wedata登録時はエスケープしなくてもOK)
//  nextLink:     '//a[starts-with(text(),"次") or contains(text(),"進む")][1]',
  nextLink:     '//a[starts-with(text(),"\u6B21") or contains(text(),"\u9032\u3080")][1]',
  pageElement:  '//a[starts-with(text(),"\u6B21") or contains(text(),"\u9032\u3080")]/preceding-sibling::*[self::img or self::br or self::hr]',
  insertBefore: '/html/body/hr[last()]',
  exampleUrl:   'http://ueharasan.y.ribbon.to/html/1to1.htm'
 },
 {
  name:         'ふたばちゃんねる',
  url:          '^http://[^\.]+\.2chan\.net/[^/]+/[\da-z]+\.htm$',
  nextLink:     '//form[substring(@action, string-length(@action) - string-length(".htm") + 1) = ".htm"][last()]',
  pageElement:  '//hr/following-sibling::table[@align="right"]/preceding-sibling::node()[not(self::center or self::p or self::hr and @width)]',
  insertBefore: '//hr/following-sibling::table[@align="right"]',
  exampleUrl:   'http://nov.2chan.net/q/futaba.htm'
 },
]&lt;/code&gt;&lt;/pre&gt;

&lt;ul&gt;
 &lt;li&gt;&lt;a href='http://wedata.net/items/2671'&gt;アイテム: ブラック会社に勤めてるんだが、もう俺は限界かもしれない - データベース: AutoPagerize - wedata&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href='http://wedata.net/items/2675?rev=6431'&gt;アイテム: ふたばちゃんねる - データベース: AutoPagerize - wedata&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;SITEINFOの適用方法&lt;/h4&gt;

&lt;ul&gt;
 &lt;li&gt;"C:\Documents and Settings\&lt;UserName&gt;\Application Data\Mozilla\Firefox\Profiles\****\gm_scripts\autopagerize\autopagerize.user.js" の &lt;code&gt;var SITEINFO&lt;/code&gt; に記入する&lt;/li&gt;
 &lt;li&gt;&lt;a href='http://wedata.net/databases/AutoPagerize/items'&gt;AutoPagerize - wedata&lt;/a&gt; にSITEINFOを登録する&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;上記いずれかの方法でSITEINFOを適用できます。&lt;/p&gt;

&lt;p&gt;ちなみに、この記事に書いたSITEINFOはwedataに登録済みなので、autopagerize.user.js を編集しないでも使えます。&lt;br /&gt;
SITEINFO作成時には「autopagerize.user.js でテストして、正常ならWedataに登録する」という流れでOKなようです。&lt;/p&gt;

&lt;h4&gt;XPathの参考URL&lt;/h4&gt;

&lt;dl&gt;
 &lt;dt&gt;&lt;a href='https://addons.mozilla.org/ja/firefox/addon/1095'&gt;XPath Checker :: Firefox Add-ons&lt;/a&gt;&lt;/dt&gt;
 &lt;dd&gt;ページ上で右クリックすると、選択したオブジェクトを指定するためのXPathを出力してくれるFirefox拡張です。&lt;br /&gt;
 右クリック後に現れたウインドウでXPathを指定すると、指定したオブジェクトのみを表示してくれるので、XPath構文をテストする用途に向いています。
 &lt;/dd&gt;
 &lt;dt&gt;&lt;a href='http://labs.gmo.jp/blog/ku/2007/07/autopagerizexpath_autopagerize_ide.html'&gt;AutoPagerize用のXPathをかんたんに作るためのブックマークレット AutoPagerize IDE - bits and bytes&lt;/a&gt;&lt;/dt&gt;
 &lt;dd&gt;このブックマークレットを使用すると、ページ上で選択したオブジェクトのXPathを出力してくれます。&lt;br /&gt;
 XPathを指定したオブジェクトにボーダー線で付けて装飾することもできます。&lt;/dd&gt;
 &lt;dt&gt;&lt;a href='http://www.zvon.org/xxl/XPathTutorial/General/examples.html'&gt;XPath Tutorial&lt;/a&gt;&lt;/dt&gt;
 &lt;dd&gt;XPathの構文例に対応したツリー構成のXMLソースを表したチュートリアル。&lt;br /&gt;
 英語が苦手な私でも、結果が一目瞭然なのが有り難かったです。&lt;/dd&gt;
 &lt;dt&gt;&lt;a href='http://piro.sakura.ne.jp/latest/blosxom/mozilla/xul/2007-09-13_selector-to-xpath.htm'&gt;Latest topics &amp;amp;gt; CSS3セレクタとXPathでの表現の対応表 - outsider reflex&lt;/a&gt;&lt;/dt&gt;
 &lt;dd&gt;CSSセレクタに対応したXPathを表にした記事。&lt;br /&gt;
 CSS習得済みの人にとってはわかりやすいと思います。&lt;/dd&gt;
 &lt;dt&gt;&lt;a href='http://msdn.microsoft.com/ja-jp/library/ms256115%28VS.80%29.aspx'&gt;XPath リファレンス&lt;/a&gt;&lt;/dt&gt;
 &lt;dd&gt;MSDNのXPathリファレンス。&lt;br /&gt;
 XPathを全般に渡って解説されているので、ここで全体を把握してキーワードを元にGoogle検索で詳細を探すと良いと思います。&lt;/dd&gt;
&lt;/dl&gt;

&lt;h4&gt;Tips/FAQ 的なこと&lt;/h4&gt;

&lt;h5&gt;"autopagerize.user.js" に記入するXPathはマルチバイト文字をUnicodeエスケープしないと働かない&lt;/h5&gt;
&lt;p&gt;マルチバイト文字は &lt;a href='http://0xcc.net/jsescape/'&gt;Text Escaping and Unescaping in JavaScript&lt;/a&gt; 等で \uXXXX の形式にしないと働かないので、注意してください。&lt;/p&gt;

&lt;h5&gt;XPath Checker ではマルチバイト文字をUnicodeエスケープすると働かない&lt;/h5&gt;
&lt;p&gt;"autopagerize.user.js" と正反対の性質なので、要注意です。&lt;br /&gt;
「XPath CheckerでXPath構文をテスト → "autopagerize.user.js" にUnicodeエスケープしたXPathを入力してテスト」という流れが良いと思います。&lt;/p&gt;

&lt;h5&gt;Wedata登録時にマルチバイト文字がUnicodeエスケープされていない場合は、自動的にエスケープされる&lt;/h5&gt;
&lt;p&gt;Wedata登録時にはUnicodeエスケープしていないXPath構文をそのまま入力すると、Wedata(が出力するJSON)にはUnicodeエスケープされたデータが登録されます。&lt;br /&gt;
もっとも、その前にSITEINFO制作者は "autopagerize.user.js" でテストしているでしょうから、この機能に意味があるかどうかに疑問は残りますが…。&lt;/p&gt;

&lt;h5&gt;/preceding-sibling::* は要素ノードのみにマッチし、/preceding-sibling::node() で全ノードにマッチする&lt;/h5&gt;
&lt;p&gt;&lt;code&gt;/preceding-sibling::node()&lt;/code&gt; でテキストノードを含めたすべてのノードを取得できます。&lt;/p&gt;
&lt;p&gt;反面、&lt;code&gt;node()&lt;/code&gt;はパフォーマンスが若干悪くなるそうなので、必要なときだけ &lt;code&gt;node()&lt;/code&gt; を使う方針でいいと思います。&lt;/p&gt;

&lt;h5&gt;ブックマークレット「AutoPagerize IDE」は一部のXPath構文で指定されたオブジェクトを強調表示しない&lt;/h5&gt;
&lt;p&gt;AutoPagerize IDEはテキストノード、hr要素ノード、&lt;code&gt;/preceding-sibling::*&lt;/code&gt; のオブジェクトを枠で囲って強調表示しません。&lt;br /&gt;
複雑なXPathを指定する時は XPath Checker を使う必要があります。&lt;/p&gt;

&lt;h4&gt;備考&lt;/h4&gt;
&lt;p&gt;Autopagerizeを導入して2日目ですので、おかしな記述があったり、用語の使い方が間違っているかもしれません。&lt;br /&gt;
XPathも今回初めて触れたので、覚え間違いがあるなら早めに修正したいところです。&lt;/p&gt;

&lt;p&gt;コメントはお気軽にどうぞ。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7737653290432592579-2560785897895757542?l=thinkarc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thinkarc.blogspot.com/feeds/2560785897895757542/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7737653290432592579&amp;postID=2560785897895757542' title='1 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default/2560785897895757542'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default/2560785897895757542'/><link rel='alternate' type='text/html' href='http://thinkarc.blogspot.com/2008/09/autopagerizesiteinfo-siteinfo.html' title='AutoPagerize用SITEINFO + SITEINFOの書き方 まとめ'/><author><name>think</name><uri>http://www.blogger.com/profile/01082418605668142158</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7737653290432592579.post-3504562162530066353</id><published>2008-03-20T21:52:00.012+09:00</published><updated>2008-03-20T23:38:50.756+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Proxomitron'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>[Prx] Googleが持つほとんどのURLにマッチさせる方法</title><content type='html'>&lt;p&gt;現実的な路線は、以下のようになると思います。&lt;/p&gt;

&lt;pre class='thinking_code'&gt;&lt;code&gt;([^/]++.|)google.co(m|.jp)
[^.]+.google.co(m|.jp)&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;どうして上のような表現になるのか？&lt;br /&gt;
これを読み解くにはドメインについて理解を深める必要があります。&lt;/p&gt;

&lt;ul&gt;
 &lt;li&gt;&lt;a href='#Google_SubDomain'&gt;Googleが持っているサブドメイン&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href='#Google_TLD'&gt;Googleが持っているトップレベルドメイン&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href='#Google_allUrl_add-up'&gt;まとめ&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;h4 id='Google_SubDomain'&gt;Googleが持っているサブドメイン&lt;/h4&gt;

&lt;p&gt;以下のURLを例にとってみましょう。&lt;/p&gt;

&lt;pre class='thinking_code'&gt;&lt;code&gt;&lt;a href='http://www.google.com/'&gt;http://www.google.com/&lt;/a&gt;&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;このURL中の www.google.com (以下、この部分をホスト名と呼びます) は3つのドメインに分割することができます。&lt;/p&gt;

&lt;pre class='thinking_code'&gt;&lt;code&gt;第1レベルドメイン (トップレベルドメイン)
  .com
第2レベルドメイン (セカンドレベルドメイン)
  .google
第3レベルドメイン (サードレベルドメイン)
  www.&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;ホスト名は第2レベルドメイン以上を持ってアドレスが与えられます。&lt;br /&gt;
だから、もし誰かがドメインを取得しようとしたら、少なくとも第2レベルドメインまでの名前を持ったURLを得ることになります。&lt;/p&gt;

&lt;p&gt;Googleは google.com のドメインを持っており、第3レベルドメイン以降のドメインはサブドメインと呼ばれるものです。(www. はサブドメイン)&lt;br /&gt;
サブドメインはGoogleが自由に作ることができるので、Googleはサブドメインを作ることでいくらでもURLを増やせます。&lt;/p&gt;

&lt;pre class='thinking_code'&gt;&lt;code&gt;&lt;a href='http://mail.google.com/'&gt;http://mail.google.com/&lt;/a&gt;
&lt;a href='http://groups.google.com/'&gt;http://groups.google.com/&lt;/a&gt;
&lt;a href='http://maps.google.com/'&gt;http://maps.google.com/&lt;/a&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;これらにマッチさせる表現は、&lt;code&gt;([^/]++.|)google.com&lt;/code&gt; か &lt;code&gt;[^.]+.google.com&lt;/code&gt; となるでしょう。&lt;br /&gt;
前者はサブドメインがないURL (google.com) にマッチしますが、後者はマッチしません。&lt;/p&gt;


&lt;h4 id='Google_TLD'&gt;Googleが持っているトップレベルドメイン&lt;/h4&gt;

&lt;p&gt;&lt;a href='http://www.google.com/'&gt;http://www.google.com/&lt;/a&gt; と &lt;a href='http://www.google.co.jp/'&gt;http://www.google.co.jp/&lt;/a&gt; はURLこそ違いますが、ページに表示される内容は同じです。&lt;br /&gt;
よくみると、.com と .co.jp が違うことがわかりますね。&lt;/p&gt;

&lt;p&gt;.jp は日本を表すドメイン名です。&lt;br /&gt;
Googleは世界中にサーバを設置しているため、google.us (アメリカ)、google.fr (フランス)など様々な国のドメインを持っています。&lt;br /&gt;
第1レベルドメインは&lt;a href='http://ja.wikipedia.org/wiki/%E3%83%88%E3%83%83%E3%83%97%E3%83%AC%E3%83%99%E3%83%AB%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%E4%B8%80%E8%A6%A7'&gt;トップレベルドメイン一覧&lt;/a&gt;にあるように、非常にたくさんの数があります。&lt;br /&gt;
Proxomitronで第1レベルドメイン全てを網羅しようとするなら、パフォーマンスの観点からリストを使うことになりますが、そこまでしなくても自分が利用している第1レベルドメインだけ網羅すれば十分かもしれません。&lt;/p&gt;


&lt;h4 id='Google_allUrl_add-up'&gt;まとめ&lt;/h4&gt;

&lt;p&gt;google.com と google.co.jp のサブドメインを含むURLにマッチする表現は&lt;/p&gt;

&lt;pre class='complete_code'&gt;&lt;code&gt;([^/]++.|)google.co(m|.jp)
[^.]+.google.co(m|.jp)&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;となります。&lt;br /&gt;
前者はサブドメインがないURL (google.com) にマッチしますが、後者はマッチしません。&lt;/p&gt;

&lt;p&gt;これでほとんどのURLに対応できると思いますが、&lt;a href='http://gigazine.net/index.php?/news/comments/20060718_google_domains/'&gt;Googleは500個以上のドメインを持っている&lt;/a&gt;そうなので、全ドメインに対応するのはまず無理でしょう。&lt;br /&gt;
サブドメインとトップレベルドメインの仕組みを理解した上で、必要なドメインを取捨選択するのが妥当だと思います。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7737653290432592579-3504562162530066353?l=thinkarc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thinkarc.blogspot.com/feeds/3504562162530066353/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7737653290432592579&amp;postID=3504562162530066353' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default/3504562162530066353'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default/3504562162530066353'/><link rel='alternate' type='text/html' href='http://thinkarc.blogspot.com/2008/03/prx-googleurl.html' title='[Prx] Googleが持つほとんどのURLにマッチさせる方法'/><author><name>think</name><uri>http://www.blogger.com/profile/01082418605668142158</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7737653290432592579.post-6240385366984921299</id><published>2008-02-21T00:51:00.004+09:00</published><updated>2008-02-23T15:42:17.400+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='ユーザー定義関数'/><title type='text'>addEventListener(), attachEvent() を使ってaddLoadEvent()</title><content type='html'>&lt;p&gt;&lt;a href='http://www.sitepoint.com/blogs/2004/05/26/closures-and-executing-javascript-on-page-load/'&gt;addLoadEvent()&lt;/a&gt; は少し古い技術なので、&lt;a href='http://www.google.co.jp/search?lr=lang_ja&amp;amp;ie=utf-8&amp;amp;q=DOM&amp;amp;client='&gt;DOM&lt;/a&gt;操作で使われる&lt;a href='http://www.google.co.jp/search?lr=lang_ja&amp;amp;ie=utf-8&amp;amp;q=addEventListener&amp;amp;client='&gt;addEventListener()&lt;/a&gt;、&lt;a href='http://www.google.co.jp/search?lr=lang_ja&amp;amp;ie=utf-8&amp;amp;q=attachEvent&amp;amp;client='&gt;attachEvent()&lt;/a&gt; を利用して書き換えてみました。&lt;/p&gt;

&lt;pre class='complete_code'&gt;&lt;code&gt;function addLoadEvent(func) {
 if(typeof window.addEventListener == &amp;#039;function&amp;#039;){ // addEventListenerが使えるなら
  window.addEventListener(&amp;#039;load&amp;#039;, func, false);
  return true;
 } else if(typeof window.attachEvent == &amp;#039;object&amp;#039;){ // attachEventが使えるなら(IE用)
  window.attachEvent(&amp;#039;onload&amp;#039;, func);
  return true;
 }

 var oldonload = window.onload; // どちらも使えないなら
 if (typeof window.onload != &amp;#039;function&amp;#039;) {
  window.onload = func;
 } else {
  window.onload = function() {
   oldonload();
   func();
  }
 }
}&lt;/code&gt;&lt;/pre&gt;


&lt;h4&gt;addEventListener() と attachEvent()&lt;/h4&gt;

&lt;p&gt;addEventListener() と attachEvent() は、DOMで扱われるノードに対するイベント(マウスクリックとか)をトリガーとして、メソッドを追加します。&lt;br /&gt;
addEventListener() はW3Cで定義された標準メソッドで、attachEvent() はIEの独自拡張です。IEは addEventListener() を利用することができません。&lt;br /&gt;
attachEvent() は追加されたメソッドの処理順がめちゃくちゃなんですが、window.onload よりは使い勝手がよいので採用しました。&lt;/p&gt;


&lt;h4&gt;window.onloadだけで作られたaddLoadEvent()との違い&lt;/h4&gt;

&lt;p&gt;まず、次のJavaScriptコードを実行してみてください。&lt;/p&gt;

&lt;pre class='thinking_code'&gt;&lt;code&gt;&amp;lt;script type=&amp;#039;text/javascript&amp;#039;&amp;gt;
function addLoadEvent(func) {
 var oldonload = window.onload;
 if (typeof window.onload != &amp;#039;function&amp;#039;) {
  window.onload = func;
 } else {
  window.onload = function() {
   oldonload();
   func();
  }
 }
}

function hello(){
 alert(&amp;#039;Hello, World!&amp;#039;);
}

function yes(){
 alert(&amp;#039;Yes, my master.&amp;#039;);
}

addLoadEvent(hello);
window.onload = yes;
&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;上記コードを実行すると、yes() が実行され、hello()が実行されない結果に終わります。&lt;br /&gt;
addEventListener() で window.onload 追加したメソッドが &lt;code&gt;window.onload = yes;&lt;/code&gt; によって上書きされてしまっているのです。&lt;/p&gt;

&lt;p&gt;上書きされないようにするためには addLoadEvent() を addEventListener() を利用したコードに書き換えます。&lt;/p&gt;

&lt;pre class='thinking_code'&gt;&lt;code&gt;&amp;lt;script type=&amp;#039;text/javascript&amp;#039;&amp;gt;
function addLoadEvent(func) {
 if(typeof window.addEventListener == &amp;#039;function&amp;#039;){
  window.addEventListener(&amp;#039;load&amp;#039;, func, false);
  return true;
 } else if(typeof window.attachEvent == &amp;#039;object&amp;#039;){
  window.attachEvent(&amp;#039;onload&amp;#039;, func);
  return true;
 }

 var oldonload = window.onload;
 if (typeof window.onload != &amp;#039;function&amp;#039;) {
  window.onload = func;
 } else {
  window.onload = function() {
   oldonload();
   func();
  }
 }
}

function hello(){
 alert(&amp;#039;Hello, World!&amp;#039;);
}

function yes(){
 alert(&amp;#039;Yes, my master.&amp;#039;);
}

addLoadEvent(hello);
window.onload = yes;
&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;これで hello(), yes() 両方の関数が有効になりました。&lt;br /&gt;
addEventListener() は window.onload に関数を格納しているわけではないので、&lt;code&gt;window.onload = yes;&lt;/code&gt; が実行されて機能が上書きされる心配はありません。&lt;/p&gt;

&lt;h4&gt;どんな状況で addLoadEvent() が役に立つのか&lt;/h4&gt;

&lt;ul&gt;
 &lt;li&gt;他人が書いたコードに機能を追加するとき&lt;/li&gt;
 &lt;li&gt;Proxomitron, Greasemonkey 等で既存サイトに機能を追加するとき&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;# 逆から見れば、一からJavaScriptコードを書くときには、addLoadEvent() を使わず addEventListener() を使った方がわかりやすいかもしれません。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7737653290432592579-6240385366984921299?l=thinkarc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thinkarc.blogspot.com/feeds/6240385366984921299/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7737653290432592579&amp;postID=6240385366984921299' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default/6240385366984921299'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default/6240385366984921299'/><link rel='alternate' type='text/html' href='http://thinkarc.blogspot.com/2008/02/addeventlistener-attachevent.html' title='addEventListener(), attachEvent() を使ってaddLoadEvent()'/><author><name>think</name><uri>http://www.blogger.com/profile/01082418605668142158</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7737653290432592579.post-7297997853501804369</id><published>2008-02-20T23:51:00.002+09:00</published><updated>2008-02-23T15:42:35.572+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='ユーザー定義関数'/><title type='text'>JavaScriptでinclude</title><content type='html'>&lt;p&gt;JavaScriptはVer.2.0から include が実装されるそうですが、それまでは長いコードを一つのJSファイルにまとめると管理が大変です。かといって、複数ファイルにコードを分割して、script要素を複数宣言するのも手間がかかります。&lt;br /&gt;
そこで、includeの代用となる関数を作りました。&lt;/p&gt;

&lt;pre class='complete_code'&gt;&lt;code&gt;// 外部JavaScriptをインクルード
function include_javascript(jspath){
 jspath = jspath.toString();

 var scriptElm = document.createElement(&amp;#039;script&amp;#039;);
 scriptElm.type = &amp;#039;text/javascript&amp;#039;;
 scriptElm.charset = &amp;#039;utf-8&amp;#039;;
 scriptElm.src = jspath;
 var head = document.getElementsByTagName(&amp;#039;head&amp;#039;)[0];
 head.appendChild(scriptElm);
}

// 外部JavaScript群をインクルード
function include_javascripts(jspaths){

 for(var key in jspaths){
  include_javascript(jspaths[key]);
 }
}&lt;/code&gt;&lt;/pre&gt;

&lt;h4&gt;関数の使い方&lt;/h4&gt;

&lt;p&gt;1つの外部JavaScriptをincludeするには、以下のように書きます。&lt;/p&gt;

&lt;pre class='thinking_code'&gt;&lt;code&gt;include_javascript(&amp;#039;./js/hogehoge.js&amp;#039;);&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;複数の外部JavaScriptをincludeするには、以下のように書きます。&lt;/p&gt;

&lt;pre class='thinking_code'&gt;&lt;code&gt;var js_path = ［
 &amp;#039;./js/hogehoge1.js&amp;#039;,
 &amp;#039;./js/hogehoge2.js&amp;#039;
］;
include_javascripts(js_path);&lt;/code&gt;&lt;/pre&gt;


&lt;h4&gt;注意点&lt;/h4&gt;

&lt;p&gt;引数のJavaScriptパスはHTML文書からの相対パスか絶対パスを指定してください。(関数を呼び出したJavaScriptファイルからの相対パスではありません)&lt;/p&gt;


&lt;h4&gt;仕組み&lt;/h4&gt;

&lt;p&gt;include_javascript() は引数で指定された外部JavaScriptファイルを呼び出すscript要素を生成します。&lt;br /&gt;
include_javascripts() は引数で渡された配列の要素数だけ include_javascript() を繰り返します。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7737653290432592579-7297997853501804369?l=thinkarc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thinkarc.blogspot.com/feeds/7297997853501804369/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7737653290432592579&amp;postID=7297997853501804369' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default/7297997853501804369'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default/7297997853501804369'/><link rel='alternate' type='text/html' href='http://thinkarc.blogspot.com/2008/02/javascriptinclude.html' title='JavaScriptでinclude'/><author><name>think</name><uri>http://www.blogger.com/profile/01082418605668142158</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7737653290432592579.post-7195558845240721740</id><published>2008-02-19T02:00:00.005+09:00</published><updated>2008-02-20T01:53:00.945+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><title type='text'>JavaScriptでExcelデータをtable要素に変換</title><content type='html'>&lt;p&gt;(X)HTMLのtable要素は多量のデータを整理してくれる優れものですが、(X)HTMLソースからは直感的に全体像が見て取れず、それ故、編集が面倒、という理由から今まで敬遠していました。&lt;br /&gt;
この欠点を解消するため、Excelの表データをtable要素に変換するJavaScriptを書いてみました。&lt;/p&gt;

&lt;ul&gt;
 &lt;li&gt;&lt;a href='http://vird2002.s8.xrea.com/test/csv_to_table.html'&gt;CSVをtable要素に変換&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;h4&gt;使い方&lt;/h4&gt;

&lt;ol&gt;
 &lt;li&gt;Excelファイルを開き、table要素に変換したい部分を範囲選択してコピー (マウスでぐぐ～っと選択すればOK)&lt;/li&gt;
 &lt;li&gt;変換スクリプトのフォーム上に貼り付け&lt;/li&gt;
 &lt;li&gt;[変換] ボタンをクリック！&lt;/li&gt;
 &lt;li&gt;table要素に変換されたHTMLソースが出力される&lt;/li&gt;
&lt;/ol&gt;


&lt;h4&gt;内部動作 (アルゴリズム)&lt;/h4&gt;

&lt;p&gt;Excelからクリップボードにコピーされたデータは「タブ文字区切りのCSVフォーマット」となっており、これを array[行][列] で構成される多次元配列に変換します。&lt;br /&gt;
(各セルにあるデータはタブ文字で区切られているので &lt;code&gt;split(&amp;quot;\t&amp;quot;)&lt;/code&gt; で良さそうに思えますが、実際にはセルデータに改行が入っているデータをコピーした時にセルデータ全体をダブルクォートで括られるケースがあり、これに対応するために少し複雑な処理をしています。)&lt;br /&gt;
多次元配列に変換したら、配列データを元にtable要素に変換して終わりです。&lt;/p&gt;

&lt;p&gt;# 特殊なことはしていないつもりですが、平均よりちょっとユーザー定義関数が多めかもしれません。&lt;br /&gt;
# &lt;code&gt;preg_replace()&lt;/code&gt; とか &lt;code&gt;hreg_replace()&lt;/code&gt; は個人的趣向がかなり入っているので、人によっては読みづらいかもしれません……。&lt;/p&gt;


&lt;h4&gt;更新履歴&lt;/h4&gt;

&lt;pre&gt;
2008/02/19 2:00
 - 初版
2008/02/20 1:23
 - ダブルクォートで括られたセルデータが改行区切りで指定されていたとき、一つのセルデータとして扱う場合があった不具合を修正 (&lt;code&gt;&amp;quot;hogehoge&amp;quot;\nhoge2&amp;quot;&lt;/code&gt;)
&lt;/pre&gt;

&lt;h4&gt;既知の不具合/仕様&lt;/h4&gt;

&lt;ul&gt;
 &lt;li&gt;結合されたセルがtable要素に反映されない。(クリップボードに格納されたデータにセルの結合を示す情報がないので、対応できません。)&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;ToDo&lt;/h4&gt;

&lt;ul&gt;
 &lt;li&gt;1列目を項目名として扱い、[1列目のデータをth要素に変換する] オプションを追加&lt;/li&gt;
 &lt;li&gt;table要素からExcelデータに戻せるように変換&lt;/li&gt;
&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7737653290432592579-7195558845240721740?l=thinkarc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thinkarc.blogspot.com/feeds/7195558845240721740/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7737653290432592579&amp;postID=7195558845240721740' title='1 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default/7195558845240721740'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default/7195558845240721740'/><link rel='alternate' type='text/html' href='http://thinkarc.blogspot.com/2008/02/javascriptexceltable.html' title='JavaScriptでExcelデータをtable要素に変換'/><author><name>think</name><uri>http://www.blogger.com/profile/01082418605668142158</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7737653290432592579.post-5431437040142260390</id><published>2008-02-11T01:45:00.000+09:00</published><updated>2008-02-11T05:15:26.426+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Proxomitron'/><category scheme='http://www.blogger.com/atom/ns#' term='フィルタ'/><title type='text'>右クリック禁止を解除するProxomitronフィルタ</title><content type='html'>&lt;p&gt;右クリックメニューの表示を禁止しているサイトで右クリックメニューを表示させます。&lt;br /&gt;
以下の3つのフィルタで実現している機能全てを含んでおり、それ以上の対策も施してあります。&lt;/p&gt;

&lt;ul&gt;
 &lt;li&gt;Allow right mouse click&lt;/li&gt;
 &lt;li&gt;Allow right mouse click 2&lt;/li&gt;
 &lt;li&gt;Allow right mouse click plus&lt;/li&gt;
&lt;/ul&gt;

&lt;pre class='complete_code'&gt;&lt;code&gt;[Patterns]
Name = &amp;quot;Allow contextmenu event [js] [2008/02/11] test2&amp;quot;
Active = TRUE
URL = &amp;quot;$TYPE(htm)&amp;quot;
Limit = 8
Match = &amp;quot;(^(^&amp;lt;/head&amp;gt;))$STOP()&amp;quot;
Replace = &amp;quot;\r\n&amp;lt;script type=&amp;#039;text/javascript&amp;#039;&amp;gt;\r\n&amp;quot;
          &amp;quot;function addLoadEvent(func) {&amp;quot;
          &amp;quot; if(typeof window.addEventListener == &amp;#039;function&amp;#039;){&amp;quot;
          &amp;quot;  window.addEventListener(&amp;#039;load&amp;#039;, func, false);&amp;quot;
          &amp;quot;  return true;&amp;quot;
          &amp;quot; } else if(typeof window.attachEvent == &amp;#039;object&amp;#039;){&amp;quot;
          &amp;quot;  window.attachEvent(&amp;#039;onload&amp;#039;, func);&amp;quot;
          &amp;quot;  return true;&amp;quot;
          &amp;quot; }&amp;quot;
          &amp;quot;&amp;quot;
          &amp;quot; var oldonload = window.onload;&amp;quot;
          &amp;quot; if (typeof window.onload != &amp;#039;function&amp;#039;) {&amp;quot;
          &amp;quot;  window.onload = func;&amp;quot;
          &amp;quot; } else {&amp;quot;
          &amp;quot;  window.onload = function() {&amp;quot;
          &amp;quot;   oldonload();&amp;quot;
          &amp;quot;   func();&amp;quot;
          &amp;quot;  }&amp;quot;
          &amp;quot; }&amp;quot;
          &amp;quot;}&amp;quot;
          &amp;quot;function killContextmenuEvent(){&amp;quot;
          &amp;quot; if(typeof document.oncontextmenu == &amp;#039;function&amp;#039;){&amp;quot;
          &amp;quot;  document.oncontextmenu = null;&amp;quot;
          &amp;quot; }&amp;quot;
          &amp;quot;&amp;quot;
          &amp;quot; if(typeof document.onmousedown == &amp;#039;function&amp;#039;){&amp;quot;
          &amp;quot;  document.onmousedown = null;&amp;quot;
          &amp;quot; }&amp;quot;
          &amp;quot;&amp;quot;
          &amp;quot; var tag = document.getElementsByTagName(&amp;#039;*&amp;#039;);&amp;quot;
          &amp;quot;&amp;quot;
          &amp;quot; for(i = 0, L = tag.length; i &amp;lt; L ; i++){&amp;quot;
          &amp;quot;  tag[i].oncontextmenu = null;&amp;quot;
          &amp;quot;  if(navigator.appName == &amp;#039;Microsoft Internet Explorer&amp;#039;){&amp;quot;
          &amp;quot;   tag[i].onmousedown = null;&amp;quot;
          &amp;quot;  }&amp;quot;
          &amp;quot; }&amp;quot;
          &amp;quot;}&amp;quot;
          &amp;quot;addLoadEvent(killContextmenuEvent);&amp;quot;
          &amp;quot;\r\n&amp;lt;/script&amp;gt;\r\n&amp;quot;&lt;/code&gt;&lt;/pre&gt;

&lt;h4&gt;動作検証&lt;/h4&gt;
&lt;p&gt;実際に動作しているか確認するためのテストページも作ってみました。&lt;/p&gt;

&lt;ul&gt;
 &lt;li&gt;&lt;a href='http://vird2002.s8.xrea.com/test/restrict_contextmenu_js_test.html'&gt;コンテキストメニュー表示の禁止テスト&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;onmousedown について&lt;/h4&gt;
&lt;p&gt;onmousedown はマウスボタンが押されたときに発動します。&lt;br /&gt;
このことから、onmousedown は右クリック禁止以外の用途で使われる事があると想像でき、onmousedownに関する処理を無効化すると、右クリック禁止以外の場面で使用している重要な機能を失ってしまう可能性があります。&lt;br /&gt;
私の検証した範囲ではonmousedown が右クリックに反応するのはIEのみという結果だったので、このフィルタではonmousedown の無効化処理をIE限定にしています。&lt;br /&gt;
(マウスイベントが右クリックによるものかの判定できなかったので、やむなくブラウザの名前で判定しました)&lt;/p&gt;

&lt;p&gt;ただし、通常の使い方で表示領域全体を監視する document.onmousedown を使用する必要性はまずないと思いますので、こちらは機能が使えれる環境であれば有効になる処理にしてあります。&lt;br /&gt;
もっとも、documentオブジェクトからonmousedownへのアクセスはIEの独自拡張っぽいです。&lt;/p&gt;

&lt;h4&gt;addEventListenerへの対策&lt;/h4&gt;

&lt;p&gt;addEventListenerにどうやって対策したものか、考えあぐねています。&lt;br /&gt;
addEventListener で追加したイベントハンドラはremoveEventListenerで解除できるようですが、メソッド名がわからなければ手が出せません。&lt;br /&gt;
悩んだ末に考えついた対策は次の2通り。どちらも形になるところまで進んでいません。&lt;/p&gt;

&lt;ul&gt;
 &lt;li&gt;addEventListener でデフォルトアクションを発生させる処理を追加する&lt;/li&gt;
 &lt;li&gt;removeEventListener ですべてのイベントハンドラを削除する&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;attachEvent対応&lt;/h4&gt;

&lt;p&gt;IE対応を謳うならattachEventにも対応しなくてはなりませんが、力尽きたのでいずれ。&lt;br /&gt;
希望があれば、声をかけてください。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7737653290432592579-5431437040142260390?l=thinkarc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thinkarc.blogspot.com/feeds/5431437040142260390/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7737653290432592579&amp;postID=5431437040142260390' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default/5431437040142260390'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default/5431437040142260390'/><link rel='alternate' type='text/html' href='http://thinkarc.blogspot.com/2008/02/proxomitron.html' title='右クリック禁止を解除するProxomitronフィルタ'/><author><name>think</name><uri>http://www.blogger.com/profile/01082418605668142158</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7737653290432592579.post-4978984255305035999</id><published>2008-02-10T01:34:00.000+09:00</published><updated>2008-02-10T01:41:33.364+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Proxomitron'/><category scheme='http://www.blogger.com/atom/ns#' term='フィルタ'/><title type='text'>Google、Yahoo特殊検索のリンク先に転送するProxomitronフィルタ</title><content type='html'>&lt;p&gt;「Google: Jump special search」を更新および、YahooでWeb検索したときに&lt;a href='http://www.google.co.jp/search?lr=lang_ja&amp;amp;ie=utf-8&amp;amp;q=Yahoo+%E3%83%80%E3%82%A4%E3%83%AC%E3%82%AF%E3%83%88%E6%A4%9C%E7%B4%A2&amp;amp;client='&gt;Yahoo ダイレクト検索&lt;/a&gt;のリンク先に転送するフィルタを作成しました。&lt;/p&gt;

更新点
&lt;ul&gt;
 &lt;li&gt;Googleの仕様変更 (&amp;lt;p class=e&amp;gt; → &amp;lt;div class=e&amp;gt;) に対応&lt;/li&gt;
&lt;/ul&gt;

&lt;pre class="complete_code"&gt;&lt;code&gt;[Patterns]
Name = &amp;quot;Yahoo: Redirect direct search [2008/02/08] test2&amp;quot;
Active = TRUE
URL = &amp;quot;$TYPE(htm)search.yahoo.co.jp/search(\?|/dir\?)&amp;quot;
Limit = 4096
Match = &amp;quot;（^(^$NEST(&amp;lt;div\s,&amp;quot;
        &amp;quot;[^&amp;gt;]++id=$AV(yschDD）*&amp;quot;
        &amp;quot;&amp;lt;a\s[^&amp;gt;]++href=$AV((http://wrs.search.yahoo.co.jp/*/\*-http(%3A|:)//rd.yahoo.co.jp/search/direct/*)\0)&amp;quot;
        &amp;quot;*,&amp;lt;/div&amp;gt;)))$STOP()&amp;quot;
Replace = &amp;quot;\k&amp;lt;meta http-equiv=&amp;quot;refresh&amp;quot; content=&amp;quot;0; url=\0&amp;quot; /&amp;gt;&amp;quot;

Name = &amp;quot;Google: Jump special search [2008/02/07] test1&amp;quot;
Active = TRUE
URL = &amp;quot;$TYPE(htm) www.google.co(m|.jp)/search\?&amp;quot;
Limit = 1024
Match = &amp;quot;（^(^&amp;quot;
        &amp;quot;&amp;lt;div\sclass=$AV(e|g(^?）$STOP()(^(^?)))&amp;gt;[^&amp;lt;]+&amp;quot;
        &amp;quot;(&amp;lt;(^table[ &amp;gt;])[^&amp;gt;]+&amp;gt;[^&amp;lt;]+)+&amp;quot;
        &amp;quot;&amp;lt;table\s[^&amp;gt;]+&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td\s[^&amp;gt;]+&amp;gt;&amp;lt;img\s[^&amp;gt;]+&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td\s[^&amp;gt;]+&amp;gt;[^&amp;lt;]+&amp;quot;
        &amp;quot;(&amp;lt;(^a\s|/td&amp;gt;)[^&amp;gt;]+&amp;gt;[^&amp;lt;]+)+&amp;lt;a\s[^&amp;gt;]++href=$AV(((/url\?url\=|)http://*)\0)[ &amp;gt;]&amp;quot;
        &amp;quot;))$STOP()&amp;quot;
Replace = &amp;quot;\k&amp;lt;meta http-equiv=&amp;quot;refresh&amp;quot; content=&amp;quot;0; url=\0&amp;quot; /&amp;gt;&amp;quot;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7737653290432592579-4978984255305035999?l=thinkarc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thinkarc.blogspot.com/feeds/4978984255305035999/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7737653290432592579&amp;postID=4978984255305035999' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default/4978984255305035999'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default/4978984255305035999'/><link rel='alternate' type='text/html' href='http://thinkarc.blogspot.com/2008/02/googleyahooproxomitron.html' title='Google、Yahoo特殊検索のリンク先に転送するProxomitronフィルタ'/><author><name>think</name><uri>http://www.blogger.com/profile/01082418605668142158</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7737653290432592579.post-7410723335243312502</id><published>2008-02-10T00:16:00.000+09:00</published><updated>2008-02-10T00:38:17.116+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Proxomitron'/><category scheme='http://www.blogger.com/atom/ns#' term='フィルタ'/><title type='text'>2ちゃんねるスレッドで長文コメントを折りたたむProxomitronフィルタ</title><content type='html'>&lt;p&gt;2ちゃんねるスレッドに投稿されている長文コメントの4行目以降を隠します。&lt;br /&gt;
4行目以降は「-- 続きを読む --」をクリックすることで、展開されます。&lt;/p&gt;

&lt;pre class="complete_code"&gt;&lt;code&gt;[Patterns]
Name = &amp;quot;2ch: Collapse long comment (1/2) [2008/02/09] test3&amp;quot;
Active = TRUE
URL = &amp;quot;$TYPE(htm)[^.]+.(2ch.net/|bbspink.com/)&amp;quot;
Limit = 8
Match = &amp;quot;(^(^&amp;lt;/head&amp;gt;))$STOP()&amp;quot;
Replace = &amp;quot;\r\n&amp;lt;script type=&amp;#039;text/javascript&amp;#039;&amp;gt;&amp;quot;
          &amp;quot;function addLoadEvent(func) {&amp;quot;
          &amp;quot; var oldonload = window.onload;&amp;quot;
          &amp;quot; if (typeof window.onload != &amp;#039;function&amp;#039;) {&amp;quot;
          &amp;quot;  window.onload = func;&amp;quot;
          &amp;quot; } else {&amp;quot;
          &amp;quot;  window.onload = function() {&amp;quot;
          &amp;quot;   oldonload();&amp;quot;
          &amp;quot;   func();&amp;quot;
          &amp;quot;  }&amp;quot;
          &amp;quot; }&amp;quot;
          &amp;quot;}&amp;quot;
          &amp;quot;function readAfterMsg(){&amp;quot;
          &amp;quot; var div = document.getElementsByTagName(&amp;#039;div&amp;#039;);&amp;quot;
          &amp;quot; for(var i=0, L=div.length; i &amp;lt; L; i++){&amp;quot;
          &amp;quot;  if(div[i].className == &amp;#039;read_after&amp;#039;){&amp;quot;
          &amp;quot;   div[i].onclick = function(){&amp;quot;
          &amp;quot;    if(this.nextSibling.style.display == &amp;#039;none&amp;#039;){&amp;quot;
          &amp;quot;     this.style.display = &amp;#039;none&amp;#039;;&amp;quot;
          &amp;quot;     this.nextSibling.style.display = &amp;#039;block&amp;#039;;&amp;quot;
          &amp;quot;    }&amp;quot;
          &amp;quot;   }&amp;quot;
          &amp;quot;  }&amp;quot;
          &amp;quot; }&amp;quot;
          &amp;quot;}&amp;quot;
          &amp;quot;addLoadEvent(readAfterMsg);&amp;quot;
          &amp;quot;\r\n&amp;lt;/script&amp;gt;\r\n&amp;quot;

Name = &amp;quot;2ch: Collapse long comment (2/2) [2008/02/09] test2&amp;quot;
Active = TRUE
URL = &amp;quot;$TYPE(htm)[^.]+.(2ch.net/|bbspink.com/)&amp;quot;
Limit = 4096
Match = &amp;quot;（&amp;lt;dd&amp;gt;&amp;quot;
        &amp;quot;(((^&amp;lt;(br /+&amp;gt;|dt&amp;gt;|/dd&amp;gt;）)?)+&amp;lt;br /+&amp;gt;)+{3})\0&amp;quot;
        &amp;quot;(((^&amp;lt;(dt&amp;gt;|/dd&amp;gt;))?)+)\1&amp;quot;
Replace = &amp;quot;\0\r\n&amp;quot;
          &amp;quot;&amp;lt;div class=&amp;#039;read_after&amp;#039;&amp;gt;-- &amp;amp;#x7d9a;&amp;amp;#x304d;&amp;amp;#x3092;&amp;amp;#x8aad;&amp;amp;#x3080; --&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;#039;display: none;&amp;#039;&amp;gt;\1&amp;lt;/div&amp;gt;\r\n&amp;quot;

Name = &amp;quot;2ch: Collapse long comment (nyo) (2/2) [2008/02/09] test2&amp;quot;
Active = TRUE
URL = &amp;quot;$TYPE(htm)[^.]+.(2ch.net/|bbspink.com/)&amp;quot;
Limit = 4096
Match = &amp;quot;（&amp;lt;dd&amp;gt;&amp;quot;
        &amp;quot;(((^&amp;lt;(br /+&amp;gt;|dt&amp;gt;|/dd&amp;gt;）)?)+&amp;lt;br /+&amp;gt;)+{3})\0&amp;quot;
        &amp;quot;(((^&amp;lt;(dt&amp;gt;|/dd&amp;gt;))?)+)\1&amp;quot;
Replace = &amp;quot;\0\r\n&amp;quot;
          &amp;quot;&amp;lt;div class=&amp;#039;read_after&amp;#039;&amp;gt;-- &amp;amp;#x7d9a;&amp;amp;#x304d;&amp;amp;#x3092;&amp;amp;#x8aad;&amp;amp;#x3080;&amp;amp;#x306b;&amp;amp;#x3087; --&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;#039;display: none;&amp;#039;&amp;gt;\1&amp;lt;/div&amp;gt;\r\n&amp;quot;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;2つある (2/2) は「-- 続きを読む --」の表現が違います。&lt;br /&gt;
機能的には変わりませんので、お好みに合わせてお使いください。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7737653290432592579-7410723335243312502?l=thinkarc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thinkarc.blogspot.com/feeds/7410723335243312502/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7737653290432592579&amp;postID=7410723335243312502' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default/7410723335243312502'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default/7410723335243312502'/><link rel='alternate' type='text/html' href='http://thinkarc.blogspot.com/2008/02/2proxomitron.html' title='2ちゃんねるスレッドで長文コメントを折りたたむProxomitronフィルタ'/><author><name>think</name><uri>http://www.blogger.com/profile/01082418605668142158</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7737653290432592579.post-4716834654798519243</id><published>2008-02-03T22:09:00.000+09:00</published><updated>2008-02-03T22:26:47.263+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='モバイル'/><title type='text'>京ぽんで使える携帯サイト 覚え書き</title><content type='html'>京ぽん(&lt;a href='http://www.google.co.jp/search?lr=lang_ja&amp;amp;ie=utf-8&amp;amp;q=WX320K'&gt;WX320K&lt;/a&gt;)のOperaで [表示モード] を [ケータイモード] にした環境で、正常に使える携帯サイト一覧です。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
■Google&lt;br /&gt;
&lt;br /&gt;
Google Mobile&lt;br /&gt;
&lt;a href='http://www.google.co.jp/m'&gt;http://www.google.co.jp/m&lt;/a&gt;&lt;br /&gt;
Gmail Mobile&lt;br /&gt;
&lt;a href='http://www.google.co.jp/m?action=addmodredirect&amp;amp;igtyp=20'&gt;http://www.google.co.jp/m?action=addmodredirect&amp;amp;igtyp=20&lt;/a&gt;&lt;br /&gt;
Google トランジット モバイル&lt;br /&gt;
&lt;a href='http://www.google.co.jp/transit?output=mobile&amp;amp;source=m'&gt;http://www.google.co.jp/transit?output=mobile&amp;amp;source=m&lt;/a&gt;&lt;br /&gt;
Google カレンダー モバイル&lt;br /&gt;
&lt;a href='http://www.google.com/calendar/m?hl=ja'&gt;http://www.google.com/calendar/m?hl=ja&lt;/a&gt;&lt;br /&gt;
Google マップ&lt;br /&gt;
&lt;a href='http://www.google.co.jp/m/lcb?mp=1&amp;amp;source=m'&gt;http://www.google.co.jp/m/lcb?mp=1&amp;amp;source=m&lt;/a&gt;&lt;br /&gt;
Google Mobile Proxy&lt;br /&gt;
&lt;a href='http://www.google.co.jp/gwt/n'&gt;http://www.google.co.jp/gwt/n&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
■交通情報&lt;br /&gt;
&lt;br /&gt;
goo路線&lt;br /&gt;
&lt;a href='http://transit.goo.ne.jp/mobile/'&gt;http://transit.goo.ne.jp/mobile/&lt;/a&gt;&lt;br /&gt;
東急バス&lt;br /&gt;
&lt;a href='http://www.tokyubus.co.jp/'&gt;http://www.tokyubus.co.jp/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
■辞書&lt;br /&gt;
&lt;br /&gt;
三省堂モバイル辞書&lt;br /&gt;
&lt;a href='http://mobile.sanseido.net/dictionary/'&gt;http://mobile.sanseido.net/dictionary/&lt;/a&gt;&lt;br /&gt;
Wapedia&lt;br /&gt;
&lt;a href='http://wapedia.mobi/ja/?setfavlang=ja'&gt;http://wapedia.mobi/ja/?setfavlang=ja&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
■価格比較&lt;br /&gt;
&lt;br /&gt;
価格.comモバイル&lt;br /&gt;
&lt;a href='http://kakaku.com/mobile/'&gt;http://kakaku.com/mobile/&lt;/a&gt;&lt;br /&gt;
価格比較コネコ モバイル&lt;br /&gt;
&lt;a href='http://m.coneco.net/'&gt;http://m.coneco.net/&lt;/a&gt;&lt;br /&gt;
Bookget Mobile&lt;br /&gt;
&lt;a href='http://m.bookget.net/'&gt;http://m.bookget.net/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
■通販サイト&lt;br /&gt;
&lt;br /&gt;
Amazon Mobile&lt;br /&gt;
&lt;a href='http://amazon.jp/'&gt;http://amazon.jp/&lt;/a&gt;&lt;br /&gt;
NTT-X Store モバイル&lt;br /&gt;
&lt;a href='http://nttxstore.jp/i/'&gt;http://nttxstore.jp/i/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
■特価情報&lt;br /&gt;
&lt;br /&gt;
特価ネット通販情報 mobile ver.&lt;br /&gt;
&lt;a href='http://www.toknet.info/i/'&gt;http://www.toknet.info/i/&lt;/a&gt;&lt;br /&gt;
やすウマ [RSS]&lt;br /&gt;
&lt;a href='http://6726.teacup.com/firehawk13/bbs/rss15.xml'&gt;http://6726.teacup.com/firehawk13/bbs/rss15.xml&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
■その他&lt;br /&gt;
&lt;br /&gt;
ケータイlivedoor&lt;br /&gt;
&lt;a href='http://m.livedoor.com/'&gt;http://m.livedoor.com/&lt;/a&gt;&lt;br /&gt;
教えてgooモバイル&lt;br /&gt;
&lt;a href='http://m.oshiete1.goo.ne.jp/'&gt;http://m.oshiete1.goo.ne.jp/&lt;/a&gt;&lt;br /&gt;
ポケットはてな&lt;br /&gt;
&lt;a href='http://mobile.hatena.ne.jp/'&gt;http://mobile.hatena.ne.jp/&lt;/a&gt;&lt;br /&gt;
携帯版4Gamer&lt;br /&gt;
&lt;a href='http://www.4gamer.net/ktai.html'&gt;http://www.4gamer.net/ktai.html&lt;/a&gt;&lt;br /&gt;
ヘッドホンレビューズ.NET&lt;br /&gt;
&lt;a href='http://headphonereviews.net/pages/user/m/'&gt;http://headphonereviews.net/pages/user/m/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
■PCでアカウント取得後、携帯専用URLを発行するWebサービス&lt;br /&gt;
&lt;br /&gt;
check*pad&lt;br /&gt;
&lt;a href='http://www.checkpad.jp/'&gt;http://www.checkpad.jp/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
## 備考&lt;br /&gt;
・教えて!gooモバイルはQ&amp;amp;A検索すると、PC版のサイトにリダイレクトされる問題があります。カテゴリから辿る分には問題ありません。&lt;br /&gt;
・livedoorは画像を適度に使って、色合いも優しく使いやすいです。&lt;br /&gt;
・ポケットはてなはあまり使ってません。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7737653290432592579-4716834654798519243?l=thinkarc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thinkarc.blogspot.com/feeds/4716834654798519243/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7737653290432592579&amp;postID=4716834654798519243' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default/4716834654798519243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default/4716834654798519243'/><link rel='alternate' type='text/html' href='http://thinkarc.blogspot.com/2008/02/blog-post.html' title='京ぽんで使える携帯サイト 覚え書き'/><author><name>think</name><uri>http://www.blogger.com/profile/01082418605668142158</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7737653290432592579.post-3414104388539278912</id><published>2008-01-29T01:12:00.000+09:00</published><updated>2008-02-01T01:30:24.468+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Proxomitron'/><category scheme='http://www.blogger.com/atom/ns#' term='フィルタ'/><title type='text'>リンク化フィルタ「http Text to Link」でstyle要素、script要素、pre要素、code要素のブロック内に誤爆する不具合を修正</title><content type='html'>&lt;p&gt;&lt;a href='http://vird2002.s8.xrea.com/'&gt;Thinking Archive(仮)&lt;/a&gt;で公開しているフィルタ「http Text to Link [2007/07/08]」を元に、以下の更新を行いました。&lt;/p&gt;

&lt;ul&gt;
 &lt;li&gt;style要素内でフィルタが動作しないようにした&lt;/li&gt;
 &lt;li&gt;script要素内でフィルタが動作しないようにした&lt;/li&gt;
 &lt;li&gt;pre要素内でフィルタが動作しないようにした&lt;/li&gt;
 &lt;li&gt;code要素内でフィルタが動作しないようにした&lt;/li&gt;
 &lt;li&gt;textarea要素の存在チェックを行うフィルタの名前を「check &amp;lt;textarea&amp;gt;」から「Global-Flag: inner textarea element」に変更&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;各要素の存在チェックは別フィルタにしており、それぞれのフィルタを無効化して「http Text to Link」を動作させることもできます。&lt;br /&gt;
例えば、pre要素内でリンク化を有効にしたかったら、「Global-Flag: inner pre element」を無効化してください。&lt;/p&gt;

&lt;pre class="complete_code"&gt;&lt;code&gt;[Patterns]
Name = &amp;quot;Global-Flag: inner style element [2008/01/29] test1&amp;quot;
Active = TRUE
URL = &amp;quot;$TYPE(htm)&amp;quot;
Limit = 256
Match = &amp;quot;(^(^&amp;lt;(&amp;quot;
        &amp;quot;style[ &amp;gt;](^$TST(inStyle=1))$SET(inStyle=1)|&amp;quot;
        &amp;quot;/style&amp;gt;$TST(inStyle=1)$SET(inStyle=)&amp;quot;
        &amp;quot;)))&amp;quot;

Name = &amp;quot;Global-Flag: inner script element [2008/01/29] test2&amp;quot;
Active = TRUE
URL = &amp;quot;$TYPE(htm)&amp;quot;
Limit = 256
Match = &amp;quot;(^(^&amp;lt;(&amp;quot;
        &amp;quot;script(\s[^&amp;gt;]+&amp;gt;|&amp;gt;)(^ &amp;lt;/script&amp;gt;|$TST(inScript=1))$SET(inScript=1)|&amp;quot;
        &amp;quot;/script&amp;gt;$TST(inScript=1)$SET(inScript=)&amp;quot;
        &amp;quot;)))&amp;quot;

Name = &amp;quot;Global-Flag: inner pre element [2008/01/29] test1&amp;quot;
Active = TRUE
URL = &amp;quot;$TYPE(htm)&amp;quot;
Limit = 256
Match = &amp;quot;(^(^&amp;lt;(&amp;quot;
        &amp;quot;pre[ &amp;gt;](^$TST(inPre=1))$SET(inPre=1)|&amp;quot;
        &amp;quot;/pre&amp;gt;$TST(inPre=1)$SET(inPre=)&amp;quot;
        &amp;quot;)))&amp;quot;

Name = &amp;quot;Global-Flag: inner code element [2008/01/29] test1&amp;quot;
Active = TRUE
URL = &amp;quot;$TYPE(htm)&amp;quot;
Limit = 256
Match = &amp;quot;(^(^&amp;lt;(&amp;quot;
        &amp;quot;code[ &amp;gt;](^$TST(inCode=1))$SET(inCode=1)|&amp;quot;
        &amp;quot;/code&amp;gt;$TST(inCode=1)$SET(inCode=)&amp;quot;
        &amp;quot;)))&amp;quot;

Name = &amp;quot;Global-Flag: inner textarea element [2008/01/29] test1&amp;quot;
Active = TRUE
URL = &amp;quot;$TYPE(htm)&amp;quot;
Limit = 256
Match = &amp;quot;(^(^&amp;lt;(&amp;quot;
        &amp;quot;textarea[ &amp;gt;](^$TST(inTextarea=1))$SET(inTextarea=1)|&amp;quot;
        &amp;quot;/textarea&amp;gt;$TST(inTextarea=1)$SET(inTextarea=)&amp;quot;
        &amp;quot;)))&amp;quot;

Name = &amp;quot;http Text to Link [2008/01/29] test4&amp;quot;
Active = TRUE
URL = &amp;quot;$TYPE(htm)&amp;quot;
Limit = 512
Match = &amp;quot;&amp;gt;(^$TST(inStyle=1)|$TST(inScript=1)|$TST(inPre=1)|$TST(inCode=1)|$TST(inTextarea=1))&amp;quot;
        &amp;quot;([^&amp;lt;&amp;gt;]++)\0(http(://|s://)\1|ttp(://|s://)\1)\2&amp;quot;
        &amp;quot;([0-9a-z_-]+{1,63}(.[0-9a-z_-]+{1,63})++{0,4}.[0-9a-z_-]+{2,6}(:[0-9]+{1,5}|(^[.0-9:a-z_-]))&amp;quot;
        &amp;quot;(/[!=#-&amp;amp;(-;?-[\]-~]+|(^/)))\3(^[&amp;#039;&amp;quot;])&amp;quot;
        &amp;quot;(^(^&amp;quot;
        &amp;quot;(&amp;lt;br /+&amp;gt;[^&amp;lt;&amp;gt;]+)+{1,2}&amp;lt;(^/a&amp;gt;)|&amp;quot;
        &amp;quot;(^&amp;lt;br /+&amp;gt;)[^&amp;lt;&amp;gt;]+(&amp;lt;!--*--&amp;gt;[^&amp;lt;]+)+&amp;lt;&amp;quot;
        &amp;quot;(^/+[^a-z]|/(&amp;quot;
        &amp;quot;((^a&amp;gt;)[^&amp;gt;]+&amp;gt; &amp;lt;/)+a&amp;gt;|title&amp;gt;|style&amp;gt;|script&amp;gt;|textarea&amp;gt;|pre&amp;gt;|code&amp;gt;|samp&amp;gt;&amp;quot;
        &amp;quot;))))&amp;quot;
Replace = &amp;quot;&amp;gt;\0&amp;lt;a style=&amp;quot;text-decoration: none&amp;quot; href=&amp;quot;http\1\3&amp;quot;&amp;gt;&amp;quot;
          &amp;quot;&amp;lt;span style=&amp;quot;font-size: small&amp;quot;&amp;gt;Linked:&amp;amp;#160;&amp;lt;/span&amp;gt;\2\3&amp;lt;/a&amp;gt;&amp;quot;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7737653290432592579-3414104388539278912?l=thinkarc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thinkarc.blogspot.com/feeds/3414104388539278912/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7737653290432592579&amp;postID=3414104388539278912' title='2 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default/3414104388539278912'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default/3414104388539278912'/><link rel='alternate' type='text/html' href='http://thinkarc.blogspot.com/2008/01/http-text-to-link.html' title='リンク化フィルタ「http Text to Link」でstyle要素、script要素、pre要素、code要素のブロック内に誤爆する不具合を修正'/><author><name>think</name><uri>http://www.blogger.com/profile/01082418605668142158</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7737653290432592579.post-6553138619308777126</id><published>2007-11-25T14:28:00.000+09:00</published><updated>2007-11-25T14:36:57.040+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='Proxomitron'/><title type='text'>JavaScriptでProxomitronで数値文字参照を実体に変換するブロックリストを出力2</title><content type='html'>&lt;p&gt;&lt;a href='http://vird2002.s8.xrea.com/test/prxlist_numcharrefer_to_plaintext.html'&gt;JavaScriptでProxomitronで数値参照を実体に変換するブロックリストを出力&lt;/a&gt;を更新しました。&lt;br /&gt;
更新点は以下の通り。&lt;/p&gt;

&lt;ul&gt;
 &lt;li&gt;入力フォームから、開始値/終了値を入力できるようにした&lt;/li&gt;
 &lt;li&gt;数値文字参照の書式を10進数/16進数から選択できるようにした&lt;/li&gt;
 &lt;li&gt;コードの整理&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;開始値/終了値には10進数の数値を入れてください。&lt;br /&gt;
16進数値を入力しても、動作しません。&lt;/p&gt;

&lt;p&gt;改行等の空白文字として「9-13」、ASCII文字として「32-126」をリスト化すれば、半角文字は網羅できそうです。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7737653290432592579-6553138619308777126?l=thinkarc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thinkarc.blogspot.com/feeds/6553138619308777126/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7737653290432592579&amp;postID=6553138619308777126' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default/6553138619308777126'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default/6553138619308777126'/><link rel='alternate' type='text/html' href='http://thinkarc.blogspot.com/2007/11/javascriptproxomitron2.html' title='JavaScriptでProxomitronで数値文字参照を実体に変換するブロックリストを出力2'/><author><name>think</name><uri>http://www.blogger.com/profile/01082418605668142158</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7737653290432592579.post-3981909325305586738</id><published>2007-11-23T22:46:00.000+09:00</published><updated>2007-11-23T23:00:55.944+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='Proxomitron'/><title type='text'>JavaScriptでProxomitronで数値文字参照を実体に変換するブロックリストを出力</title><content type='html'>&lt;p&gt;数値文字参照をProxomitronで扱うために、実体に変換するブロックリストを出力するJavaScriptを組んでみました。&lt;br /&gt;
# 出力された内容は、&lt;a href='/download/#filter_web'&gt;ReplaceStr: BlockList&lt;/a&gt;のブロックリストとして機能します。&lt;/p&gt;

&lt;ul&gt;
 &lt;li&gt;&lt;a href='http://vird2002.s8.xrea.com/test/prxlist_numcharrefer_to_plaintext.html'&gt;JavaScriptでProxomitronで数値参照を実体に変換するブロックリストを出力&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;JavaScriptは外部JSとして宣言してあるので、興味のある方はHTMLソースから辿ってみてください。&lt;br /&gt;
数値文字参照の開始番号/終了番号はJavaScriptコード内で変数宣言しています。&lt;br /&gt;
入力フォームは暇を見て作るかもしれません。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7737653290432592579-3981909325305586738?l=thinkarc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thinkarc.blogspot.com/feeds/3981909325305586738/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7737653290432592579&amp;postID=3981909325305586738' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default/3981909325305586738'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default/3981909325305586738'/><link rel='alternate' type='text/html' href='http://thinkarc.blogspot.com/2007/11/javascriptproxomitron.html' title='JavaScriptでProxomitronで数値文字参照を実体に変換するブロックリストを出力'/><author><name>think</name><uri>http://www.blogger.com/profile/01082418605668142158</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7737653290432592579.post-4408842605438303454</id><published>2007-11-23T19:06:00.000+09:00</published><updated>2007-11-23T19:15:05.198+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Proxomitron'/><category scheme='http://www.blogger.com/atom/ns#' term='不具合'/><category scheme='http://www.blogger.com/atom/ns#' term='フィルタ'/><category scheme='http://www.blogger.com/atom/ns#' term='Firefox'/><title type='text'>FirefoxのURI属性値における数値参照の解釈がおかしい</title><content type='html'>&lt;p&gt;2chスレッド &lt;a href='http://pc11.2ch.net/test/read.cgi/software/1180864206/836-'&gt;Proxomitron フィルター作成スレッド Part7&lt;/a&gt; の書き込みを見て、気がついたFirefoxの動作メモです。&lt;/p&gt;

&lt;blockquote cite='http://pc11.2ch.net/test/read.cgi/software/1180864206/836n'&gt;
36 :名無しさん@お腹いっぱい。 &amp;lt; sage &amp;gt; :2007/11/02(金) 00:37:16 ID:l+Xvx/fa0&lt;br /&gt;
    URIを「 &amp;amp;#十進数; 」の羅列で表記して隠してるページがあるんだけど&lt;br /&gt;
    どうやったら普通の文字に変換できますか？&lt;br /&gt;
    「 %十六進数 」は&amp;gt;&amp;gt;834みたいにすればいいのは解るんですが。 
&lt;/blockquote&gt;

&lt;p&gt;多分、数値参照文字を書くときに &amp;amp; までエスケープ (&amp;amp;amp;) して、数値参照表記を表示させているのだと思います。&lt;br /&gt;
この場合、ソースは以下のようなものが考えられます。&lt;br /&gt;
# リンクまで変なのは、不特定多数の掲示板に投稿された場合を考慮しての事。&lt;/p&gt;

&lt;pre class='code_block'&gt;&lt;code&gt;&amp;lt;a href=&amp;#039;http://prx.testing.com?test=&amp;amp;amp;#80;&amp;amp;amp;#114;&amp;amp;amp;#111;&amp;amp;amp;#120;&amp;amp;amp;#111;&amp;amp;amp;#109;&amp;amp;amp;#105;&amp;amp;amp;#116;&amp;amp;amp;#114;&amp;amp;amp;#111;&amp;amp;amp;#110;&amp;#039;&amp;gt;
http://prx.testing.com?test=&amp;amp;amp;#80;&amp;amp;amp;#114;&amp;amp;amp;#111;&amp;amp;amp;#120;&amp;amp;amp;#111;&amp;amp;amp;#109;&amp;amp;amp;#105;&amp;amp;amp;#116;&amp;amp;amp;#114;&amp;amp;amp;#111;&amp;amp;amp;#110;&amp;#039;&amp;gt;
&amp;lt;a&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;こうなると、数値参照で使われているアンバサンド (&amp;amp;) がエスケープされているため、数値参照としては機能しない「はず」です。&lt;br /&gt;
が、Firefox 2.0.0.9 で動作確認をすると、内部動作で「 &amp;amp;amp;#十進数; 」と同等に解釈されるのか、正常なリンクとして機能してしまいます。&lt;br /&gt;
IE7 はエスケープ前の「 &amp;amp;amp;amp;#十進数; 」として解釈するため、不正なリンクとして動作します。&lt;br /&gt;
これはIE7の解釈の方が正しい気がするのですが……。&lt;/p&gt;

&lt;p&gt;IE7で正常なリンクとして扱われるためには、&amp;amp;amp; を &amp;amp; に変換して、本来の数値参照に直す必要があります。&lt;br /&gt;
以下は、a要素のhref属性値限定で &lt;code&gt;&amp;amp;amp;&lt;/code&gt; を &lt;code&gt;&amp;amp;&lt;/code&gt; に置換するProxomitronのフィルタです。&lt;/p&gt;

&lt;pre class='complete_code'&gt;&lt;code&gt;[Patterns]
Name = &amp;quot;&amp;amp;#n; to char for URL Link [2007/11/23] test1&amp;quot;
Active = TRUE
URL = &amp;quot;$TYPE(htm)&amp;quot;
Limit = 256
Match = &amp;quot;(&amp;lt;a\s[^&amp;gt;]++href=)\#$AVQ(((*\&amp;amp;)\#amp;(#[#0:9999];)\#)+{1,*}\#)(^(^[ &amp;gt;]))&amp;quot;
Replace = &amp;quot;\@&amp;quot;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;リンクが貼られていない文字列を置換するなら、URLテキストをリンク化するフィルタ &lt;a href='http://vird2002.s8.xrea.com/download/#filter_web'&gt;http Text to Link&lt;/a&gt; で上のフィルタと同じことを行えば、実現できると思います。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7737653290432592579-4408842605438303454?l=thinkarc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thinkarc.blogspot.com/feeds/4408842605438303454/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7737653290432592579&amp;postID=4408842605438303454' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default/4408842605438303454'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default/4408842605438303454'/><link rel='alternate' type='text/html' href='http://thinkarc.blogspot.com/2007/11/firefoxuri.html' title='FirefoxのURI属性値における数値参照の解釈がおかしい'/><author><name>think</name><uri>http://www.blogger.com/profile/01082418605668142158</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7737653290432592579.post-3241298987813502300</id><published>2007-09-24T02:15:00.000+09:00</published><updated>2007-09-24T13:41:21.428+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Proxomitron'/><category scheme='http://www.blogger.com/atom/ns#' term='フィルタ'/><title type='text'>URLリストに登録されていないサイトのJavaScriptを無効にするProxomitronフィルタ</title><content type='html'>&lt;p&gt;動作内容は以下の通り。&lt;/p&gt;

&lt;ul&gt;
 &lt;li&gt;script要素を削除 (後方にnoscript要素があれば、noscript要素を外して展開する)&lt;/li&gt;
 &lt;li&gt;a要素/href属性で指定されたjavascriptスキームを無効なスキーム「killjavascript」に置換&lt;/li&gt;
 &lt;li&gt;要素埋め込み型のon****属性を無効な属性「killon****」に置換&lt;/li&gt;
&lt;/ul&gt;

&lt;pre class='complete_code'&gt;&lt;code&gt;[Patterns]
Name = &amp;quot;Disable JavaScript NoSafeList [2007/09/24] test2&amp;quot;
Active = TRUE
URL = &amp;quot;&amp;#x0024;TYPE(htm)(^&amp;#x0024;LST(JSEnable))&amp;quot;
Limit = 2048
Match = &amp;quot;&amp;#x0024;NEST(&amp;lt;script[ &amp;gt;],&amp;lt;/script&amp;gt;)&amp;quot;
        &amp;quot;&amp;#x0024;SET(#=&amp;lt;script type=&amp;#039;comment&amp;#039;&amp;gt; Disable JavaScript NoSafeList &amp;lt;/script&amp;gt;)&amp;quot;
        &amp;quot;( &amp;#x0024;NEST(&amp;lt;noscript&amp;gt;,\0,&amp;lt;/noscript&amp;gt;)&amp;quot;
        &amp;quot;&amp;#x0024;SET(#=\r\n&amp;lt;div class=&amp;#039;view_noscript&amp;#039;&amp;gt;\0&amp;lt;/div&amp;gt;)&amp;quot;
        &amp;quot;|)|&amp;quot;
        &amp;quot;(&amp;lt;a\s[^&amp;gt;]++href=)\#&amp;#x0024;AVQ(([&amp;quot;&amp;#039;]|)\#(javascript:*)\0)(^(^[ &amp;gt;]))&amp;quot;
        &amp;quot;&amp;#x0024;SET(#=kill\0)|&amp;quot;
        &amp;quot;(&amp;lt;[a-z]+{1,*}[0-9]+(^(^\s))[^&amp;gt;]++\s)\#(^(^on&amp;quot;
        &amp;quot;(abort|blur|change|click|dblclick|dragdrop|error|focus|key(down|press|up)|load|&amp;quot;
        &amp;quot;mouse(down|move|out|over|up)|move|reset|resize|select|submit|unload)=))&amp;quot;
        &amp;quot;&amp;#x0024;SET(#=kill)&amp;quot;
Replace = &amp;quot;\@&amp;quot;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;今回は技術的な興味からフィルタを作成しましたが、JavaScriptの有効/無効はブラウザ側で制御した方が確実だと思います。&lt;br /&gt;
これ以外の方法でJavaScriptが使われたとしても、ブラウザがJavaScriptを許可しなければ無効となるので。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7737653290432592579-3241298987813502300?l=thinkarc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thinkarc.blogspot.com/feeds/3241298987813502300/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7737653290432592579&amp;postID=3241298987813502300' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default/3241298987813502300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default/3241298987813502300'/><link rel='alternate' type='text/html' href='http://thinkarc.blogspot.com/2007/09/urljavascriptproxomitron.html' title='URLリストに登録されていないサイトのJavaScriptを無効にするProxomitronフィルタ'/><author><name>think</name><uri>http://www.blogger.com/profile/01082418605668142158</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7737653290432592579.post-5447827135110685399</id><published>2007-09-03T02:32:00.000+09:00</published><updated>2007-09-03T02:50:32.990+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Proxomitron'/><category scheme='http://www.blogger.com/atom/ns#' term='フィルタ'/><title type='text'>後述のa要素を含めてリンク化するProxomitronフィルタ</title><content type='html'>&lt;p&gt;&lt;a href='http://vird2002.s8.xrea.com/'&gt;Thinking Archive(仮)&lt;/a&gt;で公開しているフィルタ「http Text to Link [2007/07/08]」は、以下のHTMLソースがあったとき、URLテキストからa要素の手前までをリンク化します。&lt;/p&gt;


&lt;pre class='code_block'&gt;&lt;code class='t'&gt;&amp;lt;p&amp;gt;&lt;/code&gt;
http://www.nicovideo.jp/watch/&lt;code class='t'&gt;&amp;lt;a&lt;/code&gt;&lt;code class='i'&gt; href=&lt;code class='q'&gt;"http://www.nicovideo.jp/watch/sm111111"&lt;/code&gt; class=&lt;code class='q'&gt;"video"&lt;/code&gt;&lt;/code&gt;&lt;code class='t'&gt;&amp;gt;&lt;/code&gt;sm111111&lt;code class='t'&gt;&amp;lt;/a&amp;gt;&lt;/code&gt;&lt;code class='t'&gt;&amp;lt;br&lt;/code&gt;&lt;code class='i'&gt; /&lt;/code&gt;&lt;code class='t'&gt;&amp;gt;&lt;/code&gt;
http://www.nicovideo.jp/&lt;code class='t'&gt;&amp;lt;a&lt;/code&gt;&lt;code class='i'&gt; href=&lt;code class='q'&gt;"http://www.nicovideo.jp/mylist/111111/1111111"&lt;/code&gt; class=&lt;code class='q'&gt;"video"&lt;/code&gt;&lt;/code&gt;&lt;code class='t'&gt;&amp;gt;&lt;/code&gt;mylist/111111/1111111&lt;code class='t'&gt;&amp;lt;/a&amp;gt;&lt;/code&gt;
&lt;code class='t'&gt;&amp;lt;/p&amp;gt;&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;下記フィルタは、URLテキスト後述のa要素を含めてリンク化します。&lt;/p&gt;


&lt;pre class="complete_code"&gt;&lt;code&gt;[Patterns]
Name = &amp;quot;NicoVideo: http Text to Link with anchor [2007/09/03] test3&amp;quot;
Active = TRUE
URL = &amp;quot;&amp;#x0024;TYPE(htm)www.nicovideo.jp/watch/?&amp;quot;
Limit = 512
Match = &amp;quot;&amp;gt;(^&amp;#x0024;TST(Textarea=y))&amp;quot;
        &amp;quot;([^&amp;lt;&amp;gt;]++)\#(http(://|s://)\1|ttp(://|s://)\1)\2&amp;quot;
        &amp;quot;([0-9a-z_-]+{1,63}(.[0-9a-z_-]+{1,63})++{0,4}.[0-9a-z_-]+{2,6}(:[0-9]+{1,5}|(^[.0-9:a-z_-]))&amp;quot;
        &amp;quot;(/[!=#-&amp;amp;(-;?-[\]-~]+|(^/)))\3(^[&amp;#039;&amp;quot;])&amp;quot;
        &amp;quot;(&amp;lt;a\s[~&amp;gt;]++href=&amp;#x0024;AV(http&amp;#x0024;TST(\1)&amp;#x0024;TST(\3)\4)[^&amp;gt;]+&amp;gt;)\#&amp;quot;
        &amp;quot;(^(^&amp;#x0024;TST(\4)&amp;lt;/a&amp;gt;))&amp;quot;
Replace = &amp;quot;&amp;gt;\@&amp;lt;span style=&amp;quot;font-size: small&amp;quot;&amp;gt;Linked:&amp;amp;#160;&amp;lt;/span&amp;gt;\2\3&amp;quot;&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;上記はニコニコ動画限定ですが、このやり方なら汎用フィルタにすることも可能だと思います。
問題がなさそうなら、既存の「http Text to Link」と統合します。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7737653290432592579-5447827135110685399?l=thinkarc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thinkarc.blogspot.com/feeds/5447827135110685399/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7737653290432592579&amp;postID=5447827135110685399' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default/5447827135110685399'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default/5447827135110685399'/><link rel='alternate' type='text/html' href='http://thinkarc.blogspot.com/2007/09/aproxomitron.html' title='後述のa要素を含めてリンク化するProxomitronフィルタ'/><author><name>think</name><uri>http://www.blogger.com/profile/01082418605668142158</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7737653290432592579.post-80991020546110091</id><published>2007-08-26T06:17:00.000+09:00</published><updated>2007-08-26T06:36:48.301+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='拡張'/><category scheme='http://www.blogger.com/atom/ns#' term='Firefox'/><title type='text'>Firefox拡張メモ</title><content type='html'>&lt;p&gt;&lt;a href='http://www.mozilla-japan.org/products/firefox/'&gt;Firefox&lt;/a&gt;の拡張メモ。&lt;br /&gt;
&lt;a href='http://portableapps.com/apps/internet/firefox_portable'&gt;Firefox Portable&lt;/a&gt;で使用したことのある拡張一覧です。&lt;/p&gt;



&lt;ul&gt;
 &lt;li&gt;&lt;a href='#FxExt_keyconfig'&gt;keyconfig&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href='#FxExt_All-in-One_Gestures'&gt;All-in-One Gestures&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href='#FxExt_ColorZilla'&gt;ColorZilla&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href='#FxExt_Firebug'&gt;Firebug&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href='#FxExt_FoxyProxy'&gt;FoxyProxy&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href='#FxExt_FullerScreen'&gt;FullerScreen&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href='#FxExt_Gmail_Notifier'&gt;Gmail Notifier&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href='#FxExt_IE_Tab'&gt;IE Tab&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href='#FxExt_Locale_Switcher'&gt;Locale Switcher&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href='#FxExt_NoScript'&gt;NoScript&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href='#FxExt_ScrapBook'&gt;ScrapBook&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href='#FxExt_Stylish'&gt;Stylish&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href='#FxExt_Tab_Mix_Plus'&gt;Tab Mix Plus&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href='#FxExt_Tab_Tree'&gt;Tab Tree&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href='#FxExt_tabgroups'&gt;tabgroups&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href='#FxExt_userChrome_js'&gt;userChrome.js&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href='#FxExt_ViewSourceWith'&gt;ViewSourceWith&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;



&lt;dl&gt;
 &lt;dt id='FxExt_keyconfig'&gt;keyconfig&lt;/dt&gt;
 &lt;dd&gt;
  &lt;p&gt;ショートカットキーをカスタマイズします。&lt;br /&gt;
  公式は大分前から更新停止していて、Firefox 2.0.0.7対応している拡張は非公式の拡張(日本語版)のみのようです。&lt;/p&gt;

  &lt;ul&gt;
   &lt;li&gt;&lt;a href='http://wikiwiki.jp/firefox/?Ext%2Fkeyconfig'&gt;keyconfig - Firefox更新情報 Wiki*&lt;/a&gt;&lt;/li&gt;
   &lt;li&gt;&lt;a href='http://atbb.jp/premier/viewtopic.php?t=122'&gt;Premier&amp;#039;s Page 掲示板 :: トピックを表示 - [Fx &amp;amp; Tb] keyconfig 日本語版 (制作者トピック)&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
 &lt;/dd&gt;


 &lt;dt id='FxExt_All-in-One_Gestures'&gt;All-in-One Gestures&lt;/dt&gt;
 &lt;dd&gt;
  &lt;p&gt;マウスジェスチャに代表される、あらゆるマウス操作をカスタマイズします。日本語対応。&lt;/p&gt;

  &lt;ul&gt;
   &lt;li&gt;&lt;a href='http://wikiwiki.jp/firefox/?Ext%2FAll%A1%DDin%A1%DDOne%20Gestures'&gt;All-in-One Gestures - Firefox更新情報 Wiki*&lt;/a&gt;&lt;/li&gt;
   &lt;li&gt;&lt;a href='https://addons.mozilla.org/ja/firefox/addon/12'&gt;All-in-One Gestures :: Firefox Add-ons&lt;/a&gt;&lt;/li&gt;
   &lt;li&gt;&lt;a href='http://perso.orange.fr/marc.boullet/'&gt;Mozilla Firefox Extensions (制作者サイト)&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
 &lt;/dd&gt;



 &lt;dt id='FxExt_ColorZilla'&gt;ColorZilla&lt;/dt&gt;
 &lt;dd&gt;
  &lt;p&gt;カラーピッカー。&lt;br /&gt;抽出ポイントを選択しやすくするためか、[ページ拡大] 機能のおまけも付いてきます。日本語対応。&lt;/p&gt;

  &lt;ul&gt;
   &lt;li&gt;&lt;a href='http://wikiwiki.jp/firefox/?Ext%2FColorZilla'&gt;ColorZilla - Firefox更新情報 Wiki*&lt;/a&gt;&lt;/li&gt;
   &lt;li&gt;&lt;a href='http://www.iosart.com/firefox/colorzilla/'&gt;ColorZilla Extension for Firefox and Mozilla (制作者サイト)&lt;/a&gt;&lt;/li&gt;
   &lt;li&gt;&lt;a href='https://addons.mozilla.org/ja/firefox/addon/271'&gt;ColorZilla :: Firefox Add-ons&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
 &lt;/dd&gt;


 &lt;dt id='FxExt_Firebug'&gt;Firebug&lt;/dt&gt;
 &lt;dd&gt;
  &lt;p&gt;強力なJavaScriptデバッガ。&lt;br /&gt;
  DOMツリーを表示でき、HTML構造の確認に役立ちます。非公式版は日本語対応。&lt;/p&gt;

  &lt;ul&gt;
   &lt;li&gt;&lt;a href='http://wikiwiki.jp/firefox/?Ext%2FFireBug'&gt;Firebug - Firefox更新情報 Wiki*&lt;/a&gt;&lt;/li&gt;
   &lt;li&gt;&lt;a href='https://addons.mozilla.org/en-US/firefox/addon/1843'&gt;Firebug :: Firefox Add-ons&lt;/a&gt;&lt;/li&gt;
   &lt;li&gt;&lt;a href='http://getfirebug.com/jp.html'&gt;Firebug - Web Development Evolved (制作者サイト)&lt;/a&gt;&lt;/li&gt;
   &lt;li&gt;&lt;a href='http://norahmodel.exblog.jp/5298907/'&gt;norah&amp;#039;# : Firebug (非公式)&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
 &lt;/dd&gt;

 &lt;dt id='FxExt_FoxyProxy'&gt;FoxyProxy&lt;/dt&gt;
 &lt;dd&gt;
  &lt;p&gt;設定したURL毎にProxyを切り替えて接続します。&lt;br /&gt;
  URLリストを使わなければ、単純なProxy切り替えとしても使えます。&lt;/p&gt;

  &lt;p&gt;日本語に対応していないので、英語が得意でない人は辞書を引きつつ頑張ってください。&lt;br /&gt;
  &lt;a href='http://portableapps.com/apps/internet/firefox_portable'&gt;Firefox Portable&lt;/a&gt;を使用している場合は、オプションから [I am using Portable Firefox] にチェックを入れないと動作しません。&lt;/p&gt;

  &lt;ul&gt;
   &lt;li&gt;&lt;a href='http://wikiwiki.jp/firefox/?Ext%2FFoxyProxy'&gt;FoxyProxy - Firefox更新情報 Wiki*&lt;/a&gt;&lt;/li&gt;
   &lt;li&gt;&lt;a href='https://addons.mozilla.org/ja/firefox/addon/2464'&gt;FoxyProxy :: Firefox Add-ons&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
 &lt;/dd&gt;


 &lt;dt id='FxExt_FullerScreen'&gt;FullerScreen&lt;/dt&gt;
 &lt;dd&gt;
  &lt;p&gt;デフォルトのFirefoxは全画面表示で [ナビゲーション ツールバー] と [タブバー] が残りますが、この拡張を入れることでページ描画領域だけで全画面表示できます。&lt;br /&gt;
  英語表記ですが、設定項目がそれほど多くないので何とかなるでしょう。&lt;/p&gt;

  &lt;ul&gt;
   &lt;li&gt;&lt;a href='https://addons.mozilla.org/ja/firefox/addon/4650'&gt;FullerScreen :: Firefox Add-ons&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
 &lt;/dd&gt;



 &lt;dt id='FxExt_Gmail_Notifier'&gt;Gmail Notifier&lt;/dt&gt;
 &lt;dd&gt;
  &lt;p&gt;&lt;a href='http://mail.google.com/mail?hl=ja'&gt;Gmail&lt;/a&gt;の新着メールをお知らせします。&lt;br /&gt;
  ログインも楽になるので、Webメールを利用しているなら、入れる価値は十分あります。日本語対応。&lt;/p&gt;

  &lt;ul&gt;
   &lt;li&gt;&lt;a href='http://wikiwiki.jp/firefox/?Ext%2FGmail%20Notifier'&gt;Gmail Notifier - Firefox更新情報 Wiki*&lt;/a&gt;&lt;/li&gt;
   &lt;li&gt;&lt;a href='https://addons.mozilla.org/ja/firefox/addon/173'&gt;Gmail Notifier :: Firefox Add-ons&lt;/a&gt;&lt;/li&gt;
   &lt;li&gt;&lt;a href='http://www.nexgenmedia.net/'&gt;nexgenmedia.net (制作者サイト)&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
 &lt;/dd&gt;



 &lt;dt id='FxExt_IE_Tab'&gt;IE Tab&lt;/dt&gt;
 &lt;dd&gt;
  &lt;p&gt;現在のタブをIEエンジンに切り替えて描画します。お気に入りからもIEエンジンに切り替えることが可能です。&lt;br /&gt;
  IEでしか表示できないサイト用に。日本語対応。&lt;/p&gt;

  &lt;ul&gt;
   &lt;li&gt;&lt;a href='http://wikiwiki.jp/firefox/?Ext%2FIE%20Tab'&gt;IE Tab - Firefox更新情報 Wiki*&lt;/a&gt;&lt;/li&gt;
   &lt;li&gt;&lt;a href='https://addons.mozilla.org/ja/firefox/addon/1419'&gt;IE Tab :: Firefox Add-ons&lt;/a&gt;&lt;/li&gt;
   &lt;li&gt;&lt;a href='http://ietab.mozdev.org/'&gt;mozdev.org - ietab (制作者サイト)&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
 &lt;/dd&gt;



 &lt;dt id='FxExt_Locale_Switcher'&gt;Locale Switcher&lt;/dt&gt;
 &lt;dd&gt;
  &lt;p&gt;Firefox本体の言語設定を切り替えます。Firefox英語版を入れて、言語設定を日本語に切り替えたいときに。&lt;/p&gt;

  &lt;p&gt;以下に、&lt;a href='http://portableapps.com/apps/internet/firefox_portable'&gt;Firefox Portable&lt;/a&gt; の言語設定を英語から日本語に変える方法を紹介します。&lt;/p&gt;

  &lt;ol&gt;
   &lt;li&gt;Locale Switcher をインストール&lt;/li&gt;
   &lt;li&gt;&lt;a href='http://releases.mozilla.org/pub/mozilla.org/firefox/releases/'&gt;http://releases.mozilla.org/pub/mozilla.org/firefox/releases/&lt;/a&gt; にアクセス&lt;/li&gt;
   &lt;li&gt;&lt;code&gt;http://releases.mozilla.org/pub/mozilla.org/firefox/releases/(Firefoxのバージョン番号)/win32/xpi/&lt;/code&gt; へ移動&lt;/li&gt;
   &lt;li&gt;ja.xpi をダウンロード&lt;/li&gt;
   &lt;li&gt;ja.xpi をFirefoxウインドウにドラッグ&amp;amp;amp;ドロップ&lt;/li&gt;
   &lt;li&gt;Firefox再起動&lt;/li&gt;
   &lt;li&gt;[Tool -&amp;gt; Languages -&amp;gt; Japanese] にチェック&lt;/li&gt;
   &lt;li&gt;Firefox再起動&lt;/li&gt;
  &lt;/ol&gt;

  &lt;ul&gt;
   &lt;li&gt;&lt;a href='http://wikiwiki.jp/firefox/?Ext%2FLocale%20Switcher'&gt;Locale Switcher - Firefox更新情報 Wiki*&lt;/a&gt;&lt;/li&gt;
   &lt;li&gt;&lt;a href='https://addons.mozilla.org/ja/firefox/addon/356?id=356'&gt;Locale Switcher :: Firefox Add-ons&lt;/a&gt;&lt;/li&gt;
   &lt;li&gt;&lt;a href='http://benjamin.smedbergs.us/blog/'&gt;BSBlog (制作者サイト)&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
 &lt;/dd&gt;



 &lt;dt id='FxExt_NoScript'&gt;NoScript&lt;/dt&gt;
 &lt;dd&gt;
  &lt;p&gt;ホワイトリストに登録されていないURLにアクセスしたとき、JavaScript, Java, Flash, その他プラグインを遮断します。&lt;br /&gt;
  この拡張の便利なところは遮断したときに、情報バーでお知らせしてくれることです。&lt;br /&gt;
  ページが正常描画されなかったときに、JavaScriptを禁止したことが原因かもしれないと一目でわかるので重宝します。&lt;br /&gt;
  ほとんど日本語対応ですが、英語表記のままの箇所が少し残っています。&lt;/p&gt;

  &lt;ul&gt;
   &lt;li&gt;&lt;a href='http://wikiwiki.jp/firefox/?Ext%2FNoScript'&gt;NoScript - Firefox更新情報 Wiki*&lt;/a&gt;&lt;/li&gt;
   &lt;li&gt;&lt;a href='https://addons.mozilla.org/ja/firefox/addon/722'&gt;NoScript :: Firefox Add-ons&lt;/a&gt;&lt;/li&gt;
   &lt;li&gt;&lt;a href='http://noscript.net/'&gt;NoScript.net (制作者サイト)&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
 &lt;/dd&gt;



 &lt;dt id='FxExt_ScrapBook'&gt;ScrapBook&lt;/dt&gt;
 &lt;dd&gt;
  &lt;p&gt;WebページやWebサイト全体をスクラップ的に保存します。&lt;br /&gt;
  使用してみて、気が付いた特徴は以下の通り。&lt;/p&gt;

  &lt;ul&gt;
   &lt;li&gt;保存したページは、メニューやサイドバーの [ScrapBook] からアクセスできる&lt;/li&gt;
   &lt;li&gt;保存しないページへの相対パスリンクを絶対パスに変換できる&lt;/li&gt;
   &lt;li&gt;JavaScriptで改変した内容もソースに反映される&lt;/li&gt;
   &lt;li&gt;Webページのテキストにマーカーをつけて、ハイライトできる&lt;/li&gt;
   &lt;li&gt;保存したページをHTML要素単位で視覚的に削除できる (一回だけ [元に戻す] をできる)&lt;/li&gt;
   &lt;li&gt;日本語対応&lt;/li&gt;
  &lt;/ul&gt;

  &lt;ul&gt;
   &lt;li&gt;&lt;a href='http://wikiwiki.jp/firefox/?Ext%2FScrapBook'&gt;ScrapBook - Firefox更新情報 Wiki*&lt;/a&gt;&lt;/li&gt;
   &lt;li&gt;&lt;a href='http://amb.vis.ne.jp/mozilla/scrapbook/?lang=ja'&gt;SCRAPBOOK :: Firefox Extension (制作者サイト)&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
 &lt;/dd&gt;



 &lt;dt id='FxExt_Stylish'&gt;Stylish&lt;/dt&gt;
 &lt;dd&gt;
  &lt;p&gt;ユーザースタイルシートの編集/管理を行います。日本語対応。&lt;/p&gt;

  &lt;ul&gt;
   &lt;li&gt;&lt;a href='http://wikiwiki.jp/firefox/?Ext%2FStylish'&gt;Stylish - Firefox更新情報 Wiki*&lt;/a&gt;&lt;/li&gt;
   &lt;li&gt;&lt;a href='https://addons.mozilla.org/ja/firefox/addon/2108'&gt;Stylish :: Firefox Add-ons&lt;/a&gt;&lt;/li&gt;
   &lt;li&gt;&lt;a href='http://userstyles.org/stylish/'&gt;Stylish | userstyles.org (制作者サイト)&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
 &lt;/dd&gt;




 &lt;dt id='FxExt_Tab_Mix_Plus'&gt;Tab Mix Plus&lt;/dt&gt;
 &lt;dd&gt;
  &lt;p&gt;タブに関連する挙動をカスタマイズします。&lt;br /&gt;
  [新しいタブをアクティブなタブの隣に開く], [タブバーをホイールクリックしたときにタブを閉じる] など、国産タブブラウザで当たり前に出来る多く機能をこの拡張で実現できます。日本語対応。&lt;/p&gt;

  &lt;ul&gt;
   &lt;li&gt;&lt;a href='http://wikiwiki.jp/firefox/?Ext%2FTab%20Mix%20Plus'&gt;Tab Mix Plus - Firefox更新情報 Wiki*&lt;/a&gt;&lt;/li&gt;
   &lt;li&gt;&lt;a href='https://addons.mozilla.org/ja/firefox/addon/1122'&gt;Tab Mix Plus :: Firefox Add-ons&lt;/a&gt;&lt;/li&gt;
   &lt;li&gt;&lt;a href='http://tmp.garyr.net/'&gt;Tab Mix Plus (制作者サイト)&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
 &lt;/dd&gt;


 &lt;dt id='FxExt_Tab_Tree'&gt;Tab Tree&lt;/dt&gt;
 &lt;dd&gt;
  &lt;p&gt;サイドバーに [現在開いているタブ] をツリー表示します。&lt;br /&gt;
  アルファ版なので機能は少ないですが、不具合はなく。&lt;br /&gt;
  難点を述べるなら、[Tab Tree] を呼ぶショートカットキーがないのが少し不便です。日本語対応。&lt;/p&gt;

  &lt;ul&gt;
   &lt;li&gt;&lt;a href='http://wikiwiki.jp/firefox/?Ext%2FTab%20Tree'&gt;Tab Tree - Firefox更新情報 Wiki*&lt;/a&gt;&lt;/li&gt;
   &lt;li&gt;&lt;a href='http://tinybenki.sblo.jp/'&gt;絶対に便器！ (制作者サイト)&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
 &lt;/dd&gt;



 &lt;dt id='FxExt_tabgroups'&gt;tabgroups&lt;/dt&gt;
 &lt;dd&gt;
  &lt;p&gt;複数のタブをまとめる「タブグループ」というタブを配置し、多数のタブを効率よく管理します。&lt;br /&gt;
  英語表記ですが、オプションがないので使用するに当たって支障はないと思います。&lt;/p&gt;

  &lt;p&gt;&lt;a href='http://dombla.net/sylera/'&gt;Sylera&lt;/a&gt;のレイヤーによく似た機能で期待していたのですが、タブを50個ほど開くと動作が不安定になるので泣く泣く使用を断念しました。&lt;br /&gt;
  公式HPでは「既知の不具合」が判明しているにも関わらず、更新されていないので、不具合修正は期待できそうにありません。&lt;/p&gt;

  &lt;ul&gt;
   &lt;li&gt;&lt;a href='http://wikiwiki.jp/firefox/?Ext%2Ftabgroups'&gt;tabgroups - Firefox更新情報 Wiki*&lt;/a&gt;&lt;/li&gt;
   &lt;li&gt;&lt;a href='http://paranoid-androids.com/tabgroups/'&gt;Tab Groups: Firefox Extension&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
 &lt;/dd&gt;



 &lt;dt id='FxExt_userChrome_js'&gt;userChrome.js&lt;/dt&gt;
 &lt;dd&gt;

 &lt;p&gt;ユーザースクリプトを追加してFirefox本体の機能をカスタマイズします。&lt;/p&gt;

 &lt;ul&gt;
  &lt;li&gt;&lt;a href='http://wikiwiki.jp/firefox/?Ext%2FuserChrome.js'&gt;userChrome.js - Firefox更新情報 Wiki*&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href='http://firefox.geckodev.org/index.php?userChrome.js'&gt;userChrome.js - Mozilla Firefox まとめサイト&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href='http://forums.mozillazine.org/viewtopic.php?t=397735'&gt;[Ext] userChrome.js - MozillaZine Forums (制作者トピック)&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;

 &lt;/dd&gt;



 &lt;dt id='FxExt_ViewSourceWith'&gt;ViewSourceWith&lt;/dt&gt;
 &lt;dd&gt;
  &lt;p&gt;Webページのソースを予め設定しておいた任意のテキストエディタで開きます。&lt;br /&gt;
  使用してみて、気が付いた特徴は以下の通り。&lt;/p&gt;

  &lt;ul&gt;
   &lt;li&gt;右クリックメニューに [ソースをプログラムで開く] という項目を追加する&lt;/li&gt;
   &lt;li&gt;ページ上の右クリックメニュー [ページのソースを表示] のエディタは変更しない&lt;/li&gt;
   &lt;li&gt;登録したエディタに対して、文字コード「UTF-8」の文字列を渡す&lt;/li&gt;
   &lt;li&gt;複数のエディタを登録できる&lt;/li&gt;
   &lt;li&gt;日本語対応&lt;/li&gt;
  &lt;/ul&gt;

  &lt;p&gt;&lt;a href='http://hide.maruo.co.jp/software/hidemaru.html'&gt;秀丸エディタ&lt;/a&gt;を登録すると、文字コードの指定し直しを要求される事があります。&lt;br /&gt;
  秀丸エディタはmeta要素のcharset属性値から文字コードを取得して読み込みを試みますが、ViewSourceWithはUTF-8のテキストを秀丸に渡すので、charsetの値がUTF-8ではないとき、文字コードが合致しません。&lt;br /&gt;
  起動オプションが渡せれば、秀丸は強制的にUTF-8として開くことが出来るのですが…。&lt;/p&gt;

  &lt;ul&gt;
   &lt;li&gt;&lt;a href='http://wikiwiki.jp/firefox/?Ext%2FViewSourceWith'&gt;ViewSourceWith - Firefox更新情報 Wiki*&lt;/a&gt;&lt;/li&gt;
   &lt;li&gt;&lt;a href='https://addons.mozilla.org/ja/firefox/addon/394'&gt;ViewSourceWith :: Firefox Add-ons&lt;/a&gt;&lt;/li&gt;
   &lt;li&gt;&lt;a href='http://dafizilla.sourceforge.net/'&gt;Dafizilla (制作者サイト)&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
 &lt;/dd&gt;
&lt;/dl&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7737653290432592579-80991020546110091?l=thinkarc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thinkarc.blogspot.com/feeds/80991020546110091/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7737653290432592579&amp;postID=80991020546110091' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default/80991020546110091'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default/80991020546110091'/><link rel='alternate' type='text/html' href='http://thinkarc.blogspot.com/2007/08/firefox.html' title='Firefox拡張メモ'/><author><name>think</name><uri>http://www.blogger.com/profile/01082418605668142158</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7737653290432592579.post-3779224935632984065</id><published>2007-08-22T00:22:00.000+09:00</published><updated>2007-08-22T00:31:16.647+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='Proxomitron'/><category scheme='http://www.blogger.com/atom/ns#' term='フィルタ'/><title type='text'>JavaScriptを挿入するデフォルトのProxomitronフィルタ修正版</title><content type='html'>&lt;p&gt;Proxomitron本体にデフォルトで付属しているフィルタは、誤爆を引き起こす要素をいくつか持っています。&lt;br /&gt;
以下に挙げるフィルタは、JavaScriptを挿入するタイプのフィルタで出来るだけ誤爆しないように工夫したものです。&lt;/p&gt;



&lt;p&gt;HTML文書を読み込む前にJavaScriptを挿入するフィルタ修正版。&lt;/p&gt;

&lt;pre class="complete_code"&gt;&lt;code&gt;[Patterns]
Name = &amp;quot;Kill pop-up windows [2007/08/21] fixed&amp;quot;
Active = TRUE
URL = &amp;quot;&amp;#x0024;TYPE(htm)&amp;quot;
Limit = 8
Match = &amp;quot;(^(^&amp;lt;script[ &amp;gt;]|&amp;lt;/head&amp;gt;))&amp;#x0024;STOP()&amp;quot;
Replace = &amp;quot;&amp;lt;script type=&amp;#039;text/javascript&amp;#039; src=&amp;#039;http://local.ptron/WindowOpen.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;\r\n&amp;quot;

Name = &amp;quot;Suppress all JavaScript errors [2007/08/21] fixed&amp;quot;
Active = TRUE
URL = &amp;quot;&amp;#x0024;TYPE(htm)&amp;quot;
Limit = 8
Match = &amp;quot;(^(^&amp;lt;script[ &amp;gt;]|&amp;lt;/head&amp;gt;))&amp;#x0024;STOP()&amp;quot;
Replace = &amp;quot;&amp;lt;script type=&amp;#039;text/javascript&amp;#039;&amp;gt;\r\n&amp;quot;
          &amp;quot;function NoError(){return(true);} onerror=NoError;&amp;quot;
          &amp;quot;&amp;lt;/script&amp;gt;\r\n&amp;quot;

Name = &amp;quot;Stop browser window resizing [2007/08/21] fixed&amp;quot;
Active = TRUE
URL = &amp;quot;&amp;#x0024;TYPE(htm)&amp;quot;
Limit = 8
Match = &amp;quot;(^(^&amp;lt;script[ &amp;gt;]|&amp;lt;/head&amp;gt;))&amp;#x0024;STOP()&amp;quot;
Replace = &amp;quot;&amp;lt;script type=&amp;#039;text/javascript&amp;#039;&amp;gt;\r\n&amp;quot;
          &amp;quot;function moveTo(){return true;} function resizeTo(){return true;}&amp;quot;
          &amp;quot;&amp;lt;/script&amp;gt;\r\n&amp;quot;&lt;/code&gt;&lt;/pre&gt;





&lt;p&gt;HTML文書を読み終わった後にJavaScriptを挿入するフィルタ。&lt;/p&gt;

&lt;pre class="complete_code"&gt;&lt;code&gt;[Patterns]
Name = &amp;quot;Restore pop-ups after a page loads [2007/08/21] fixed&amp;quot;
Active = TRUE
URL = &amp;quot;&amp;#x0024;TYPE(htm)&amp;quot;
Limit = 8
Match = &amp;quot;(^(^&amp;lt;/head&amp;gt;))&amp;#x0024;STOP()&amp;quot;
Replace = &amp;quot;&amp;lt;script type=&amp;#039;text/javascript&amp;#039;&amp;gt;\r\n&amp;quot;
          &amp;quot;function addLoadEvent(func) {&amp;quot;
          &amp;quot;&amp;#x0009;var oldonload = window.onload;&amp;quot;
          &amp;quot;&amp;#x0009;if (typeof window.onload != &amp;#039;function&amp;#039;) {&amp;quot;
          &amp;quot;&amp;#x0009;&amp;#x0009;window.onload = func;&amp;quot;
          &amp;quot;&amp;#x0009;} else {&amp;quot;
          &amp;quot;&amp;#x0009;&amp;#x0009;window.onload = function() {&amp;quot;
          &amp;quot;&amp;#x0009;&amp;#x0009;&amp;#x0009;oldonload();&amp;quot;
          &amp;quot;&amp;#x0009;&amp;#x0009;&amp;#x0009;func();&amp;quot;
          &amp;quot;&amp;#x0009;&amp;#x0009;}&amp;quot;
          &amp;quot;&amp;#x0009;}&amp;quot;
          &amp;quot;}&amp;quot;
          &amp;quot;addLoadEvent(PrxRST); &amp;quot;
          &amp;quot;&amp;lt;/script&amp;gt;\r\n&amp;quot;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;2007/05/22時点の修正版では、ページ読み込み後にJavaScript実行するために、&lt;code&gt;(^(^&amp;lt;/html&amp;gt;))&lt;/code&gt; を使っていましたが、これは &lt;code class=t&gt;&amp;lt;/html&amp;gt;&lt;/code&gt; の後ろにJavaScriptを挿入するHTMLに対応できていませんでした。&lt;br /&gt;
今回は、&lt;a href='http://www.sitepoint.com/blogs/2004/05/26/closures-and-executing-javascript-on-page-load/'&gt;addLoadEvent&lt;/a&gt; でこの問題を解消しています。&lt;br /&gt;
でも、今となっては「addLoadEvent」も古い書き方で、&lt;a href='http://d.hatena.ne.jp/amachang/20060321'&gt;window.addEventListener を使う&lt;/a&gt; のが適切なのでしょうね。&lt;br /&gt;
今の書き方でも実用上問題はないはずなので、イベントリスナ系統をまとめて覚えた後に対応しようと考えています。&lt;/p&gt;


&lt;p&gt;&lt;a href='http://www.pluto.dti.ne.jp/~tengu/proxomitron/'&gt;Proxomitron-J&lt;/a&gt;で配布されている「Allow right mouse click 3種セット」の修正版。&lt;/p&gt;


&lt;pre class="complete_code"&gt;&lt;code&gt;[Patterns]
Name = &amp;quot;Allow right mouse click [2007/05/23] fixed&amp;quot;
Active = TRUE
URL = &amp;quot;&amp;#x0024;TYPE(htm)&amp;quot;
Limit = 16
Match = &amp;quot;.(onmousedown=|captureEvents\()&amp;quot;
Replace = &amp;quot;.PrxOff_&amp;quot;

Name = &amp;quot;Allow right mouse click 2 [2007/08/21] fixed&amp;quot;
Active = TRUE
URL = &amp;quot;&amp;#x0024;TYPE(htm)&amp;quot;
Limit = 8
Match = &amp;quot;(^(^&amp;lt;/head&amp;gt;))&amp;#x0024;STOP()&amp;quot;
Replace = &amp;quot;&amp;lt;script type=&amp;#039;text/javascript&amp;#039;&amp;gt;\r\n&amp;quot;
          &amp;quot;function addLoadEvent(func) {&amp;quot;
          &amp;quot;&amp;#x0009;var oldonload = window.onload;&amp;quot;
          &amp;quot;&amp;#x0009;if (typeof window.onload != &amp;#039;function&amp;#039;) {&amp;quot;
          &amp;quot;&amp;#x0009;&amp;#x0009;window.onload = func;&amp;quot;
          &amp;quot;&amp;#x0009;} else {&amp;quot;
          &amp;quot;&amp;#x0009;&amp;#x0009;window.onload = function() {&amp;quot;
          &amp;quot;&amp;#x0009;&amp;#x0009;&amp;#x0009;oldonload();&amp;quot;
          &amp;quot;&amp;#x0009;&amp;#x0009;&amp;#x0009;func();&amp;quot;
          &amp;quot;&amp;#x0009;&amp;#x0009;}&amp;quot;
          &amp;quot;&amp;#x0009;}&amp;quot;
          &amp;quot;}&amp;quot;
          &amp;quot;function onMousedownNull(){&amp;quot;
          &amp;quot;&amp;#x0009;document.onmousedown=null;&amp;quot;
          &amp;quot;}&amp;quot;
          &amp;quot;addLoadEvent(onMousedownNull);&amp;quot;
          &amp;quot;&amp;lt;/script&amp;gt;\r\n&amp;quot;

Name = &amp;quot;Allow right mouse click plus [2007/05/23] fixed&amp;quot;
Active = TRUE
Multi = TRUE
URL = &amp;quot;&amp;#x0024;TYPE(htm)&amp;quot;
Limit = 512
Match = &amp;quot;(&amp;lt;[^&amp;gt;]++\s)oncontextmenu(^(^=))&amp;quot;
Replace = &amp;quot;ProxAllow&amp;quot;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;依頼を受けたフィルタを修正しており、デフォルトのフィルタ全てを修正してはいません。&lt;br /&gt;
元のフィルタと修正版を比較すれば、修正内容の見当は付くと思います。&lt;br /&gt;
でも、リクエストを受け付けないというわけではないので、要望があれば、順次対応していくつもりです。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7737653290432592579-3779224935632984065?l=thinkarc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thinkarc.blogspot.com/feeds/3779224935632984065/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7737653290432592579&amp;postID=3779224935632984065' title='1 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default/3779224935632984065'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default/3779224935632984065'/><link rel='alternate' type='text/html' href='http://thinkarc.blogspot.com/2007/08/javascriptproxomitron.html' title='JavaScriptを挿入するデフォルトのProxomitronフィルタ修正版'/><author><name>think</name><uri>http://www.blogger.com/profile/01082418605668142158</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7737653290432592579.post-1220719532584181715</id><published>2007-08-07T01:25:00.000+09:00</published><updated>2007-08-07T01:46:10.613+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Proxomitron'/><category scheme='http://www.blogger.com/atom/ns#' term='フィルタ'/><title type='text'>不正な Content-Encoding ヘッダを削除するProxomitronフィルタ</title><content type='html'>&lt;p&gt;Content-EncodingヘッダはHTTP通信時の符号化方式を指定するヘッダです。&lt;br /&gt;
Proxomitronは不正な Content-Encoding を検出すると、符号化内容がわからないために、フィルタの働きを止めてしまいます。&lt;br /&gt;
このフィルタは不正なContent-Encodingヘッダを削除することで、符号化内容をProxomitronに正しく認識させ、フィルタを有効にします。&lt;br /&gt;
(ついでに、古い名前の x-gzip, x-compress を新しい名前に訂正します)&lt;/p&gt;

&lt;pre class="complete_code"&gt;&lt;code&gt;[HTTP headers]
In = TRUE
Out = FALSE
Key = &amp;quot;Content-Encoding: Kill incorrect Encoding (In) [2007/08/07] test1&amp;quot;
Match = &amp;quot;(^gzip|deflate|compress)(x-(gzip|compress)\0|?)&amp;quot;
Replace = &amp;quot;\0&amp;quot;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;改めて、&lt;a href='http://www.ietf.org/rfc/rfc2616.txt'&gt;RFC2616&lt;/a&gt;を確認してみたら、&lt;strong&gt;この content-coding 値は、Accept-Encoding ヘッダでのみ使用し、Content-Encoding ヘッダでは使用すべきではない&lt;/strong&gt; とあったので、その修正版です。&lt;br /&gt;
フィルタ名が変わっているのは気分的なもので、特に意味はありません。&lt;/p&gt;

&lt;ul&gt;
 &lt;li&gt;&lt;a href='http://www.studyinghttp.net/cgi-bin/rfc.cgi?2616#Sec3.5'&gt;[RFC2616] ハイパーテキスト転送プロトコル HTTP/1.1 - 3.5 内容コーディング&lt;/a&gt; (Studying HTTP)&lt;/li&gt;
 &lt;li&gt;&lt;a href='http://www.practical-lamp.com/LAMP/PHP/reference/rfc/html/sec3.html#sec3.5'&gt;[RFC2616] ハイパーテキスト転送プロトコル HTTP/1.1 - 3.5 内容コーディング&lt;/a&gt; (Practical LAMP)&lt;/li&gt;
 &lt;li&gt;&lt;a href='http://www.practical-lamp.com/LAMP/PHP/reference/rfc/html/sec14.html#sec14.11'&gt;[RFC2616] HTTP/1.1: ヘッダフィールド定義 - 14.11 Content-Encoding&lt;/a&gt; (Practical LAMP)&lt;/li&gt;
 &lt;li&gt;&lt;a href='http://suika.fam.cx/~wakaba/-temp/wiki/wiki?Content-Encoding'&gt;若葉的世界 - Content-Encoding&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7737653290432592579-1220719532584181715?l=thinkarc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thinkarc.blogspot.com/feeds/1220719532584181715/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7737653290432592579&amp;postID=1220719532584181715' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default/1220719532584181715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default/1220719532584181715'/><link rel='alternate' type='text/html' href='http://thinkarc.blogspot.com/2007/08/content-encoding-proxomitron.html' title='不正な Content-Encoding ヘッダを削除するProxomitronフィルタ'/><author><name>think</name><uri>http://www.blogger.com/profile/01082418605668142158</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7737653290432592579.post-1037213891169633092</id><published>2007-08-06T00:33:00.000+09:00</published><updated>2007-09-10T01:39:04.201+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='userchrome.js'/><category scheme='http://www.blogger.com/atom/ns#' term='Firefox'/><title type='text'>userchrome.js で「タイトルとURLをコピー」</title><content type='html'>&lt;p&gt;前々から利用させていただいている&lt;a href='http://www.xuldev.org/blog/?p=51'&gt;SCRAPBLOG : [userChrome.js] Copy Title + URL&lt;/a&gt;にちょっとした変更を加えてみました。
変更点は以下の通り。&lt;/p&gt;

&lt;ul&gt;
 &lt;li&gt;&lt;a href='http://space.geocities.yahoo.co.jp/gl/alice0775/view/20061130'&gt;userchrome.js.xpiの話題 - alice0775のファイル置き場&lt;/a&gt; を参考に、コンテキストメニューを日本語に変更&lt;/li&gt;
 &lt;li&gt;改行コードを &lt;code&gt;\r\n&lt;/code&gt; に変更 (一部のソフトで &lt;code&gt;\n&lt;/code&gt; を改行として扱わないことがあるため)&lt;/li&gt;
 &lt;li&gt;URLテキストの一部記号をURLエスケープ&lt;/li&gt;
 &lt;li&gt;タイトルのHTMLエスケープ処理でシングルクォートもエスケープ&lt;/li&gt;
 &lt;li&gt;(個人的に使用している)li要素形式のコピーを追加&lt;/li&gt;
&lt;/ul&gt;

&lt;pre class="complete_code"&gt;&lt;code&gt;/**
 * A user script for userChrome.js extension.
 * @name タイトルとURLをコピー
 * @description 「タイトルとURLをコピー」コマンドをタブメニューに追加
 * @compatibility Firefox 2.0.0.6
 * @author Gomita, think
 * @lastUupdated 2007.09.10
 * @permalink http://thinkarc.blogspot.com/2007/08/userchromejs-url.html
 * @originallink http://www.xuldev.org/blog/?p=51
*/
(function()
{
&amp;#x0009;window.ucjs_copyTabInfo = function(copytype)
&amp;#x0009;{
&amp;#x0009;&amp;#x0009;function htmlEscape(s) {
&amp;#x0009;&amp;#x0009;&amp;#x0009;s = s.replace(/&amp;lt;/g, "&amp;amp;lt;");&amp;#x0009;// 小なり
&amp;#x0009;&amp;#x0009;&amp;#x0009;s = s.replace(/&amp;gt;/g, "&amp;amp;gt;");&amp;#x0009;// 大なり
&amp;#x0009;&amp;#x0009;&amp;#x0009;s = s.replace(/&amp;amp;/g, "&amp;amp;amp;");&amp;#x0009;// アンバサンド
&amp;#x0009;&amp;#x0009;&amp;#x0009;s = s.replace(/"/g, '&amp;amp;quot;');&amp;#x0009;// ダブルクォート
&amp;#x0009;&amp;#x0009;&amp;#x0009;s = s.replace(/'/g, '&amp;amp;#039;');&amp;#x0009;// シングルクォート

&amp;#x0009;&amp;#x0009;&amp;#x0009;return s;
&amp;#x0009;&amp;#x0009;}

&amp;#x0009;&amp;#x0009;function urlEscape(dat){
&amp;#x0009;&amp;#x0009;&amp;#x0009;dat = dat.replace(/%(?![\da-f]{2})/ig, '%25');&amp;#x0009;// パーセント
&amp;#x0009;&amp;#x0009;&amp;#x0009;dat = dat.replace(/ /g, '%20');&amp;#x0009;&amp;#x0009;&amp;#x0009;&amp;#x0009;&amp;#x0009;// 半角スペース
&amp;#x0009;&amp;#x0009;&amp;#x0009;dat = dat.replace(/\"/g, '%22');&amp;#x0009;&amp;#x0009;&amp;#x0009;&amp;#x0009;// ダブルクオート
&amp;#x0009;&amp;#x0009;&amp;#x0009;dat = dat.replace(/(#[^#]*)#/, "$1%23");&amp;#x0009;&amp;#x0009;// シャープ
&amp;#x0009;&amp;#x0009;&amp;#x0009;dat = dat.replace(/\'/g, '%27');&amp;#x0009;&amp;#x0009;&amp;#x0009;&amp;#x0009;// シングルクオート
&amp;#x0009;&amp;#x0009;&amp;#x0009;dat = dat.replace(/\(/g, '%28');&amp;#x0009;&amp;#x0009;&amp;#x0009;&amp;#x0009;// 左小括弧
&amp;#x0009;&amp;#x0009;&amp;#x0009;dat = dat.replace(/\)/g, '%29');&amp;#x0009;&amp;#x0009;&amp;#x0009;&amp;#x0009;// 右小括弧
&amp;#x0009;&amp;#x0009;&amp;#x0009;dat = dat.replace(/\*/g, '%2a');&amp;#x0009;&amp;#x0009;&amp;#x0009;&amp;#x0009;// アスタリスク
&amp;#x0009;&amp;#x0009;&amp;#x0009;dat = dat.replace(/,/g, '%2c');&amp;#x0009;&amp;#x0009;&amp;#x0009;&amp;#x0009;&amp;#x0009;// カンマ
&amp;#x0009;&amp;#x0009;&amp;#x0009;dat = dat.replace(/&amp;lt;/g, '%3c');&amp;#x0009;&amp;#x0009;&amp;#x0009;&amp;#x0009;&amp;#x0009;// 小なり
&amp;#x0009;&amp;#x0009;&amp;#x0009;dat = dat.replace(/&amp;gt;/g, '%3e');&amp;#x0009;&amp;#x0009;&amp;#x0009;&amp;#x0009;&amp;#x0009;// 大なり
&amp;#x0009;&amp;#x0009;&amp;#x0009;dat = dat.replace(/\[/g, '%5b');&amp;#x0009;&amp;#x0009;&amp;#x0009;&amp;#x0009;// 左大括弧
&amp;#x0009;&amp;#x0009;&amp;#x0009;dat = dat.replace(/\\/g, '%5c');&amp;#x0009;&amp;#x0009;&amp;#x0009;&amp;#x0009;// 円記号
&amp;#x0009;&amp;#x0009;&amp;#x0009;dat = dat.replace(/]/g, '%5d');&amp;#x0009;&amp;#x0009;&amp;#x0009;&amp;#x0009;&amp;#x0009;// 右大括弧
&amp;#x0009;&amp;#x0009;&amp;#x0009;dat = dat.replace(/\^/g, '%5e');&amp;#x0009;&amp;#x0009;&amp;#x0009;&amp;#x0009;// キャレット
&amp;#x0009;&amp;#x0009;&amp;#x0009;dat = dat.replace(/`/g, '%60');&amp;#x0009;&amp;#x0009;&amp;#x0009;&amp;#x0009;&amp;#x0009;// バッククォート
&amp;#x0009;&amp;#x0009;&amp;#x0009;dat = dat.replace(/{/g, '%7b');&amp;#x0009;&amp;#x0009;&amp;#x0009;&amp;#x0009;&amp;#x0009;// 左中括弧
&amp;#x0009;&amp;#x0009;&amp;#x0009;dat = dat.replace(/\|/g, '%7c');&amp;#x0009;&amp;#x0009;&amp;#x0009;&amp;#x0009;// 縦棒
&amp;#x0009;&amp;#x0009;&amp;#x0009;dat = dat.replace(/}/g, '%7d');&amp;#x0009;&amp;#x0009;&amp;#x0009;&amp;#x0009;&amp;#x0009;// 右中括弧

&amp;#x0009;&amp;#x0009;&amp;#x0009;return dat;
&amp;#x0009;&amp;#x0009;}

&amp;#x0009;&amp;#x0009;var tab = document.popupNode;
&amp;#x0009;&amp;#x0009;var url = gBrowser.getBrowserForTab(tab).contentWindow.location.href;
&amp;#x0009;&amp;#x0009;var txt;

&amp;#x0009;&amp;#x0009;switch (copytype){
&amp;#x0009;&amp;#x0009;&amp;#x0009;case 'text':
&amp;#x0009;&amp;#x0009;&amp;#x0009;&amp;#x0009;txt = tab.label + "\r\n" + urlEscape(url);
&amp;#x0009;&amp;#x0009;&amp;#x0009;&amp;#x0009;break;
&amp;#x0009;&amp;#x0009;&amp;#x0009;case 'anchor':
&amp;#x0009;&amp;#x0009;&amp;#x0009;&amp;#x0009;txt = '&amp;lt;a href=\'' + htmlEscape(urlEscape(url)) + '\'&amp;gt;' + htmlEscape(tab.label) + '&amp;lt;/a&amp;gt;';
&amp;#x0009;&amp;#x0009;&amp;#x0009;&amp;#x0009;break;
&amp;#x0009;&amp;#x0009;&amp;#x0009;case 'list':
&amp;#x0009;&amp;#x0009;&amp;#x0009;&amp;#x0009;txt = '&amp;lt;li&amp;gt;&amp;lt;a href=\'' + htmlEscape(urlEscape(url)) + '\'&amp;gt;' + htmlEscape(tab.label) + '&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;';
&amp;#x0009;&amp;#x0009;&amp;#x0009;&amp;#x0009;break;
&amp;#x0009;&amp;#x0009;}

&amp;#x0009;&amp;#x0009;if(txt){
&amp;#x0009;&amp;#x0009;&amp;#x0009;var clipboard = Components.classes["@mozilla.org/widget/clipboardhelper;1"]
&amp;#x0009;&amp;#x0009;&amp;#x0009;.getService(Components.interfaces.nsIClipboardHelper);
&amp;#x0009;&amp;#x0009;&amp;#x0009;clipboard.copyString(txt);
&amp;#x0009;&amp;#x0009;}
    };

&amp;#x0009;var UI = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"].
&amp;#x0009;createInstance(Components.interfaces.nsIScriptableUnicodeConverter);
&amp;#x0009;UI.charset = 'UTF-8';
&amp;#x0009;var menuitem = Array();

/*
&amp;#x0009;menuitem の初期化処理を forEach で回したかったのですが、上手くいかず保留。
&amp;#x0009;多分、初歩的なミスだと思います…。

&amp;#x0009;var menuindex = 0;
&amp;#x0009;var menu_array = Array(
&amp;#x0009;&amp;#x0009;'text': 'タイトルとURLをコピー',
&amp;#x0009;&amp;#x0009;'anchor': 'タイトルとURLをa要素でコピー',
&amp;#x0009;&amp;#x0009;'list': 'タイトルとURLをli要素でコピー'
&amp;#x0009;);

&amp;#x0009;function setLabel(element, index) {
&amp;#x0009;&amp;#x0009;menuitem[menuindex] = document.createElement("menuitem");
&amp;#x0009;&amp;#x0009;menuitem[menuindex].setAttribute("label", UI.ConvertToUnicode(element));
&amp;#x0009;&amp;#x0009;menuitem[menuindex].setAttribute("oncommand", "ucjs_copyTabInfo(" + index + ");");
&amp;#x0009;&amp;#x0009;menuindex++;
&amp;#x0009;}

&amp;#x0009;menu_array.forEach(setLabel);
*/

&amp;#x0009;menuitem[0] = document.createElement("menuitem");
&amp;#x0009;menuitem[0].setAttribute("label", UI.ConvertToUnicode("タイトルとURLをコピー"));
&amp;#x0009;menuitem[0].setAttribute("oncommand", "ucjs_copyTabInfo('text');");

&amp;#x0009;menuitem[1] = document.createElement("menuitem");
&amp;#x0009;menuitem[1].setAttribute("label", UI.ConvertToUnicode("タイトルとURLをa要素でコピー"));
&amp;#x0009;menuitem[1].setAttribute("oncommand", "ucjs_copyTabInfo('anchor');");

&amp;#x0009;menuitem[2] = document.createElement("menuitem");
&amp;#x0009;menuitem[2].setAttribute("label", UI.ConvertToUnicode("タイトルとURLをli要素でコピー"));
&amp;#x0009;menuitem[2].setAttribute("oncommand", "ucjs_copyTabInfo('list');");

&amp;#x0009;setTimeout(function()
&amp;#x0009;{
&amp;#x0009;&amp;#x0009;gBrowser.mStrip.childNodes[1].appendChild(document.createElement("menuseparator"));

&amp;#x0009;&amp;#x0009;for(var i=0, L=menuitem.length; i &amp;lt; L; i++){
&amp;#x0009;&amp;#x0009;&amp;#x0009;gBrowser.mStrip.childNodes[1].appendChild(menuitem[i]);
&amp;#x0009;&amp;#x0009;}

&amp;#x0009;}, 0);
})();&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;ようは、Syleraスクリプトで使っていた処理を使い回しただけだったり。&lt;br /&gt;
URLエスケープは、&lt;a href='http://openlab.ring.gr.jp/k16/htmllint/htmllint.html'&gt;Another HTML-lint&lt;/a&gt;で文法チェック時にエラーを返すURL文字をエスケープします。&lt;/p&gt;

&lt;p&gt;いくつかエスケープ不要な文字が混じっていますが、これは掲示板にURLを投稿する状況を考慮しています。&lt;br /&gt;
ほとんどの掲示板は &lt;code&gt;http://&lt;/code&gt; から始まるURL文字列に自動的にリンクが貼られますが、一部の文字をURL文字として認識してくれないことがあります。&lt;br /&gt;
例えば、「アスタリスクや括弧があると、その手前でリンク化が止まう」というような状況。&lt;br /&gt;
それでは困るので、未対応と思われるマイナーな記号をパーセントエンコードして、正しくリンクさせようという試みです。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7737653290432592579-1037213891169633092?l=thinkarc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thinkarc.blogspot.com/feeds/1037213891169633092/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7737653290432592579&amp;postID=1037213891169633092' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default/1037213891169633092'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default/1037213891169633092'/><link rel='alternate' type='text/html' href='http://thinkarc.blogspot.com/2007/08/userchromejs-url.html' title='userchrome.js で「タイトルとURLをコピー」'/><author><name>think</name><uri>http://www.blogger.com/profile/01082418605668142158</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7737653290432592579.post-660157997794111036</id><published>2007-08-05T05:22:00.000+09:00</published><updated>2007-08-05T05:45:50.062+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Proxomitron'/><category scheme='http://www.blogger.com/atom/ns#' term='フィルタ'/><title type='text'>position:relative のブラクラに対抗するProxomitronフィルタ</title><content type='html'>&lt;p&gt;&lt;a href='http://d.hatena.ne.jp/Hamachiya2/20070804/browser_crasher'&gt;ぼくはまちちゃん！(Hatena) - IEを華麗に撃墜する一行&lt;/a&gt;で紹介されているブラクラに対抗するためのProxomitronフィルタです。&lt;/p&gt;

&lt;pre class="complete_code"&gt;&lt;code&gt;[Patterns]
Name = &amp;quot;Anti Browser Crasher by position:relative [for IE6] [2007/08/05] test1&amp;quot;
Active = TRUE
URL = &amp;quot;&amp;#x0024;TYPE(htm)|&amp;#x0024;TYPE(css)&amp;quot;
Limit = 256
Match = &amp;quot;\* &amp;#x0024;NEST({,&amp;quot;
        &amp;quot;( ((^position)[^:]+:[^;]+; )+)\#&amp;quot;
        &amp;quot;position : [^;]+;+&amp;quot;
        &amp;quot;\#,})&amp;quot;
Replace = &amp;quot;* {\@}&amp;quot;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;IE7ではブラクラそのものが効かず、&lt;a href='http://browsers.evolt.org/?ie/32bit/standalone'&gt;IE6 Standalone&lt;/a&gt;でブラクラが無効化されることを確認しました。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7737653290432592579-660157997794111036?l=thinkarc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thinkarc.blogspot.com/feeds/660157997794111036/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7737653290432592579&amp;postID=660157997794111036' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default/660157997794111036'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default/660157997794111036'/><link rel='alternate' type='text/html' href='http://thinkarc.blogspot.com/2007/08/positionrelative-proxomitron.html' title='position:relative のブラクラに対抗するProxomitronフィルタ'/><author><name>think</name><uri>http://www.blogger.com/profile/01082418605668142158</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7737653290432592579.post-8845906398593664088</id><published>2007-08-04T15:36:00.000+09:00</published><updated>2007-08-05T05:46:09.330+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Proxomitron'/><category scheme='http://www.blogger.com/atom/ns#' term='フィルタ'/><title type='text'>ニコニコ動画のメッセージサーバ系フィルタが効かなくなっていた問題に暫定対応</title><content type='html'>&lt;p&gt;下記フィルタを適用すれば、今までのフィルタがそのまま動作するようになります。&lt;/p&gt;

&lt;pre class="complete_code"&gt;&lt;code&gt;[HTTP headers]
In = FALSE
Out = TRUE
Key = &amp;quot;Accept-encoding: Kill Nicovideo encoding (out) [2007/08/02] test1&amp;quot;
URL = &amp;quot;msg[0-9]+.nicovideo.jp/api/(^?)&amp;quot;
Match = &amp;quot;*&amp;quot;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;ニコニコ動画のメッセージサーバはgzip圧縮したデータを送信するようになりましたが、Proxomitronはgzipを解凍せずに処理しようとします。&lt;br /&gt;
上のフィルタは、Webブラウザの通信リクエスト時に「gzip圧縮に対応していません」というヘッダを送信し、gzip圧縮していないデータを受け取ることで既存のフィルタを有効にします。&lt;br /&gt;
これを行うと、メッセージサーバのgzip圧縮(負荷対策)を無効化してしまうので、できればやりたくないのですが、他によい代替手段を思いつかないので。&lt;/p&gt;

&lt;p&gt;Proxomitronはgzipに対応していないわけではなく、text/html, text/css などの「WebページフィルタでマッチするContent/Type」ではgzipを解凍して処理します。&lt;br /&gt;
ですので、Content/Typeを変更すれば、gzip圧縮したままでフィルタが効くようになりますが、汎用フィルタが誤爆する可能性を考えると、難しいものがあります。&lt;/p&gt;

&lt;p&gt;&lt;a href='http://abc.s65.xrea.com/prox/wiki/'&gt;Proxomitron等に関するWiki&lt;/a&gt; によると、&lt;/p&gt;

&lt;blockquote&gt;Content-Encoding: gzip で、Content-Type: が text/html、multipart/x-mixed-replace、text/css、text/javascript、 application/x-javascript、text/vbscript のどれか($TYPE(oth) 以外)の場合、Webページフィルタでは解凍された物が処理対象になる&lt;/blockquote&gt;

&lt;p&gt;とあり、multipart/x-mixed-replace というあまりお目にかかることのなさそうなヘッダもgzipの解凍処理対象となるようですが、multipart/x-mixed-replace自体がよくわからないヘッダだったので使用しませんでした。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7737653290432592579-8845906398593664088?l=thinkarc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thinkarc.blogspot.com/feeds/8845906398593664088/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7737653290432592579&amp;postID=8845906398593664088' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default/8845906398593664088'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default/8845906398593664088'/><link rel='alternate' type='text/html' href='http://thinkarc.blogspot.com/2007/08/blog-post.html' title='ニコニコ動画のメッセージサーバ系フィルタが効かなくなっていた問題に暫定対応'/><author><name>think</name><uri>http://www.blogger.com/profile/01082418605668142158</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7737653290432592579.post-4292043996385971516</id><published>2007-08-01T01:47:00.000+09:00</published><updated>2007-08-01T01:59:47.288+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Proxomitron'/><title type='text'>ニコニコ動画を快適にする Proxomitron 導入解説ver0.9</title><content type='html'>&lt;p&gt;&lt;a href="http://nikosuke.blog92.fc2.com/blog-entry-642.html"&gt;ニコニコ動画おすすめ&lt;/a&gt;経由で新しいProxomitron導入開設動画が出ていることに気が付きました。&lt;/p&gt;

&lt;ul&gt;
 &lt;li&gt;&lt;a href="http://www.nicovideo.jp/watch/sm731262"&gt;ニコニコ動画を快適にする Proxomitron 導入解説ver0.9 - ニコニコ動画(RC)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;RC対応版の動画は初めてでしょうか。&lt;br /&gt;
「間違いとかあったらコメください。たぶんそのうち改良版を出すと思いますので。」とのこと。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7737653290432592579-4292043996385971516?l=thinkarc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thinkarc.blogspot.com/feeds/4292043996385971516/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7737653290432592579&amp;postID=4292043996385971516' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default/4292043996385971516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default/4292043996385971516'/><link rel='alternate' type='text/html' href='http://thinkarc.blogspot.com/2007/08/proxomitron-ver09.html' title='ニコニコ動画を快適にする Proxomitron 導入解説ver0.9'/><author><name>think</name><uri>http://www.blogger.com/profile/01082418605668142158</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7737653290432592579.post-6120518065946305967</id><published>2007-07-25T23:07:00.002+09:00</published><updated>2009-03-09T12:24:39.442+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NGEx'/><category scheme='http://www.blogger.com/atom/ns#' term='正規表現'/><category scheme='http://www.blogger.com/atom/ns#' term='Jane'/><title type='text'>Jane用のNGExメモ</title><content type='html'>&lt;p&gt;永遠に「書きかけ」かもしれません。&lt;/p&gt;



&lt;ul&gt;
 &lt;li&gt;&lt;a href="#NGEx_ResAnchor_1-1000"&gt;&amp;gt;1-1000&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#NGEx_Mail_not_sage"&gt;メール欄が sage 以外&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#NGEx_less_or_equal_Quadriliteral_comment"&gt;4文字以下のレス&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#NGEx_Contiguous_Alphabet"&gt;連続英文字&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#NGEx_Fifteen-letter_Kanji"&gt;漢字15文字&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#NGEx_Res-Num_Getter"&gt;～GET&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#NGEx_madaaa"&gt;まだ～？&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#NGEx_calumny_on_sentence_end"&gt;文末中傷&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#NGEx_Amphiboly_Comment"&gt;文意不明なレス&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#NGEx_Keeping_up"&gt;保守&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#NGEx_It_is_a_mistake"&gt;誤爆&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#NGEx_Ore-Ore"&gt;オレオレ&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#NGEx_Drop_dead"&gt;「死ね」「氏ね」「市ね」&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#NGEx_AutoPost_by_script"&gt;スクリプトによる自動書き込み&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#NGEx_Space_Delimiter"&gt;空白区切り文字&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#NGEx_Vertical_writing"&gt;縦書き (4文字)&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#NGEx_Copy_and_Paste_PostItem"&gt;投稿記事のコピペ&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#NGEx_Contiguous_ImgLink"&gt;画像リンクの連投&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#NGEx_Contiguous_Anchor"&gt;アンカー5連投&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#NGEx_Contiguous_scheme"&gt;スキーム5連投 (行内)&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#NGEx_Contiguous_Anchor-Element_HTML-Code"&gt;a要素 HTMLコード 連投 (1行×5)&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#NGEx_Contiguous_HTML_character_entity_reference"&gt;HTML文字実体参照 5連投&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#NGEx_Contiguous_single-line"&gt;1行文の2連投&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#NGEx_Contiguous_multiline-line"&gt;複数行の2連投&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#NGEx_Contiguous_inline-Strings"&gt;行内の文字列 5連投&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#NGEx_Contiguous_Mesh_tone_mark"&gt;アミトーンの記号連投&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#NGEx_Big_AA_by_Parallel-Mark"&gt;巨大AA (記号の並列)&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#NGEx_Big_AA_by_line-symmetric_mark"&gt;巨大AA (記号の線対称)&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#NGEx_Dialogue_balloon_in_Name"&gt;台詞用ふきだし (名前)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;





&lt;h4 id="NGEx_ResAnchor_1-1000"&gt;&amp;gt;1-1000&lt;/h4&gt;

&lt;pre class="complete_code"&gt;&lt;code&gt;[&amp;gt;1-1000]
MsgType = 正規(含む)
MsgBody="(?:&amp;amp;gt;|＞)[1１]\-(?:1000|１０００)"
Option = 透明あぼーん, NGIDへの自動追加&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;code&gt;&amp;gt;1-1000&lt;/code&gt;を含む書き込みをあぼーんします。&lt;/p&gt;



&lt;h4 id="NGEx_Mail_not_sage"&gt;メール欄が sage 以外&lt;/h4&gt;

&lt;pre class="complete_code"&gt;&lt;code&gt;[メール欄 [Not sage]]
MailType = 正規(含まない)
MailBody="sage|^$"
Option = 透明あぼーん&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;メール欄が sage ではない書き込みをあぼーんします。

ただし、メール欄が空欄の記事にはマッチしません。

(投稿者が2ちゃんねるの仕様を知らずにスレッドを上げる事があるため)&lt;/p&gt;



&lt;h4 id="NGEx_less_or_equal_Quadriliteral_comment"&gt;4文字以下のレス&lt;/h4&gt;

&lt;pre class="complete_code"&gt;&lt;code&gt;[4文字以下のレス]
MsgType = 正規(含む)
MsgBody="^(?:[ 　]*&amp;lt;br&amp;gt;)*[ 　]*[^&amp;lt;]{1,4}(?:[ 　]*&amp;lt;br&amp;gt;)*[ 　]*&amp;#x0024;"
Option = 透明あぼーん&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;4文字以下の書き込みをあぼーんします。(全角文字も1文字としてカウントします)&lt;/p&gt;


&lt;h4 id="NGEx_Contiguous_Alphabet"&gt;連続英文字&lt;/h4&gt;

&lt;pre class="complete_code"&gt;&lt;code&gt;[連続英文字 (6文字以上)]
MsgType = 正規(含む)
MsgBody="[^#]([a-vx-zａ-ｖｘ-ｚ])\1{5}(?! *;|[&amp;quot;&amp;#039;])"
Option = 透明あぼーん, NGIDへの自動追加&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&amp;quot;aaaaa&amp;quot; など、6文字以上の連続した英字を含む書き込みをあぼーんします。&lt;br /&gt;
&lt;code&gt;&lt;span class='t'&gt;&amp;lt;span&lt;/span&gt;&lt;span class='i'&gt; style=&lt;span class='q'&gt;&amp;quot;color: #ffffff;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class='t'&gt;&amp;gt;&lt;/span&gt;&lt;/code&gt; のようなCSSのカラーコードに誤爆するのを防ぐための処理を入れてあります。&lt;/p&gt;



&lt;h4 id="NGEx_Fifteen-letter_Kanji"&gt;漢字15文字&lt;/h4&gt;

&lt;pre class="complete_code"&gt;&lt;code&gt;[漢字15文字]
MsgType = 正規(含む)
MsgBody="[一-龠]{15}"
Option = 透明あぼーん, NGIDへの自動追加&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;連続した15文字の漢字を含む書き込みをあぼーんします。

どこかのスレッドから借用させていただきました。&lt;/p&gt;



&lt;h4 id="NGEx_Res-Num_Getter"&gt;～GET&lt;/h4&gt;

&lt;pre class="complete_code"&gt;&lt;code&gt;[～GET]
MsgType = 正規(含む)
MsgBody="[\d０-９](?:げっと|ゲット|get|ｇｅｔ)"
Option = 透明あぼーん, NGIDへの自動追加&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;レス番ゲッターをあぼーんします。&lt;/p&gt;



&lt;h4 id="NGEx_madaaa"&gt;まだ～？&lt;/h4&gt;

&lt;pre class="complete_code"&gt;&lt;code&gt;[まだ～？]
MsgType = 正規(含む)
MsgBody="[まマﾏ][～ーｰぁｧ]*(?:[だダ]|ﾀﾞ)[～ーｰぁｧ]+[?？]"
Option = 透明あぼーん&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;間延びした「まだ～？」発言をあぼーんします。&lt;/p&gt;


&lt;h4 id="NGEx_calumny_on_sentence_end"&gt;文末中傷&lt;/h4&gt;

&lt;pre class="complete_code"&gt;&lt;code&gt;[文末中傷]
MsgType = 正規(含む)
MsgBody="(?:アホスレ|キモイ|イラネ|いらね|必死だな|最低だな|最悪だな|グロだな|[\(( 　](?:ﾌﾟ|プ|はぁと)+)(?:$|[ w\(　ｗ（]|&amp;lt;br&amp;gt;)"
Option = 透明あぼーん, NGIDへの自動追加&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;文末の中傷発言をあぼーんします。&lt;/p&gt;



&lt;h4 id="NGEx_Amphiboly_Comment"&gt;文意不明なレス&lt;/h4&gt;

&lt;pre class="complete_code"&gt;&lt;code&gt;[文意不明なレス]
MsgType = 正規(含む)
MsgBody=&amp;quot;^(?:[ 　]*&amp;lt;br&amp;gt;)*[ 　]*(?:[ !\d０-９　！]|age|sage)+(?:[ 　]*&amp;lt;br&amp;gt;)*[ 　]*&amp;#x0024;&amp;quot;
Option = 透明あぼーん, NGIDへの自動追加&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;「数字」「感嘆符 (!)」「age」「sage」のみで構成される書き込みをあぼーんします。&lt;/p&gt;



&lt;h4 id="NGEx_Keeping_up"&gt;保守&lt;/h4&gt;

&lt;pre class="complete_code"&gt;&lt;code&gt;[保守]
MsgType = 正規(含む)
MsgBody="^[ 　]*(?:保守|ほしゅ|ﾎｯ?ｼｭ|hos[hy]u)[ 　。]*$"
Option = 透明あぼーん&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;保守のみの書き込みをあぼーんします。

書き込み自体は有り難いのですが、視覚スペースを増やしたいので消しています。&lt;/p&gt;



&lt;h4 id="NGEx_It_is_a_mistake"&gt;誤爆&lt;/h4&gt;

&lt;pre class="complete_code"&gt;&lt;code&gt;[誤爆]
MsgType = 正規(含む)
MsgBody="^[ 　]*↑?誤爆[ 　]*$"
Option = 透明あぼーん, NGIDへの自動追加&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;「↑誤爆」のみの書き込みをあぼーんします。(誤爆を装った荒らし)&lt;/p&gt;



&lt;h4 id="NGEx_Ore-Ore"&gt;オレオレ&lt;/h4&gt;

&lt;pre class="complete_code"&gt;&lt;code&gt;[オレオレ]
MsgType = 正規(含む)
MsgBody="(?:(?:俺|オレ|おれ|漏れ)も?){2}"
Option = 透明あぼーん&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;オレオレ詐欺師を消し去ります。&lt;/p&gt;





&lt;h4 id="NGEx_Drop_dead"&gt;「死ね」「氏ね」「市ね」&lt;/h4&gt;

&lt;pre class="complete_code"&gt;&lt;code&gt;[死ね]
MsgType = 正規(含む)
MsgBody="[死氏市][ 　]*ね"
Option = 透明あぼーん, NGIDへの自動追加&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;「死ね」「氏ね」「市ね」を含む書き込みをあぼーんします。&lt;/p&gt;



&lt;h4 id="NGEx_AutoPost_by_script"&gt;スクリプトによる自動書き込み&lt;/h4&gt;

&lt;pre class="complete_code"&gt;&lt;code&gt;[スクリプトによる自動書き込み]
MsgType = 正規(含む)
MsgBody="犯[ 　]*罪[ 　]*者|自[ 　]*首|変[ 　]*態|下[ 　]*衆|知[ 　]*障|池[ 　]*沼|低[ 　]*脳|社[ 　]*会[ 　]*の[ 　]*ダ[ 　]*ニ|溜[ 　]*ま[ 　]*り[ 　]*場"
Option = 透明あぼーん, NGIDへの自動追加&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;スクリプトによる自動書き込みをあぼーんします。

当時、猛威を振るっていたのは「AntiDojin」とか「Antilo」とかその辺りのウイルスだったと思います。

現在は脅威ではありませんが、中傷コメントにもマッチするので残してあります。&lt;/p&gt;



&lt;h4 id="NGEx_Space_Delimiter"&gt;空白区切り文字&lt;/h4&gt;

&lt;pre class="complete_code"&gt;&lt;code&gt;[空白区切り文字 (4文字)]
MsgType = 正規(含む)
MsgBody="(?:[ w　w]+[ぁ-龠]){4}(?=[ &amp;lt;w　w]|&amp;#x0024;)"
Option = 透明あぼーん&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;「テ ス ト で す よ ？」のような空白区切りの文字列を含む書き込みあぼーんします。&lt;br /&gt;
空白文字ではありませんが、&amp;quot;w&amp;quot; 区切りにも該当し、例えば「みwなwぎwっwてwきwたw」をあぼーんできます。&lt;/p&gt;



&lt;h4 id="NGEx_Vertical_writing"&gt;縦書き (4文字)&lt;/h4&gt;

&lt;pre class="complete_code"&gt;&lt;code&gt;[縦書き (4文字)]
MsgType = 正規(含む)
MsgBody="(?:^|&amp;lt;br&amp;gt;)[ 　]*[^ &amp;lt;　](?:(?:[ 　]*&amp;lt;br&amp;gt;)+[ 　]*[^ &amp;lt;　]){3}(?=[ 　]*(?:&amp;lt;br&amp;gt;|&amp;#x0024;))"
Option = 透明あぼーん&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;改行を利用した縦書き4文字を含む書き込みをあぼーんします。

1行置きの縦書きにも対応しています。&lt;/p&gt;



&lt;h4 id="NGEx_Copy_and_Paste_PostItem"&gt;投稿記事のコピペ&lt;/h4&gt;

&lt;pre class="complete_code"&gt;&lt;code&gt;[投稿記事のコピペ]
MsgType = 正規(含む)
MsgBody="投稿日[:：][ 　]*\d{2,4}/\d{2}/\d{2}\([^)]+\)[ 　]*\d{2}:\d{2}:\d{2}"
Option = 透明あぼーん&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;2ちゃんねるの投稿記事をコピペした書き込みをあぼーんします。

Janeのデフォルトスキン(2ちゃんねるをブラウザで見たときと同じ)からコピペした書式にしか対応していないので、全てのコピペには対応できていません。

ですが、結構マッチしてくれます。&lt;/p&gt;



&lt;h4 id="NGEx_Contiguous_ImgLink"&gt;画像リンクの連投&lt;/h4&gt;

&lt;pre class="complete_code"&gt;&lt;code&gt;[画像リンクの連投 (1行×5 / 完全一致)]
MsgType = 正規(含む)
MsgBody=&amp;quot;^(?:[ 　]*&amp;lt;br&amp;gt;)*[ 　]*(?:h?ttp://[\w-]{1,63}(?:\.[\w-]{1,63}){0,4}\.[\w-]{2,6}(?::\d{1,5}|(?![.\w\-:]))/[!=#-&amp;amp;(-;?-[\]-~]+\.(?:jpg|png|gif|bmp)(?:[ 　]*&amp;lt;br&amp;gt;)*[ 　]*){5,}&amp;#x0024;&amp;quot;
Option = 透明あぼーん, NGIDへの自動追加&lt;/code&gt;&lt;/pre&gt;

&lt;pre class="code_block"&gt;&lt;code&gt;http://test.com/test1.jpg
http://test.com/test2.jpg
http://test.com/test3.jpg
http://test.com/test4.jpg
http://test.com/test5.jpg&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;上記のような、画像リンクを5連投するだけの書き込みをあぼーんします。(完全一致)&lt;/p&gt;


&lt;pre class="complete_code"&gt;&lt;code&gt;[画像リンク 10連投 (部分一致)]
MsgType = 正規(含む)
MsgBody=&amp;quot;(?:^|&amp;lt;br&amp;gt;)[ 　]*(?:h?ttp://(?&amp;lt;domain&amp;gt;[[:alnum:]\-]{1,63})(?:\.\g&amp;lt;domain&amp;gt;){1,5}(?::\d{1,5})?/[!=#-&amp;amp;(-;?-[\]-~]+\.(?:jpg|png|gif|bmp)(?:[ 　]*&amp;lt;br&amp;gt;[ 　]*)*){10}&amp;quot;
Option = 透明あぼーん, NGIDへの自動追加&lt;/code&gt;&lt;/pre&gt;

&lt;pre class="code_block"&gt;&lt;code&gt;テスト
http://test.com/test1.jpg http://test.com/test2.jpg
http://test.com/test3.jpg http://test.com/test4.jpg
http://test.com/test5.jpg http://test.com/test6.jpg
http://test.com/test7.jpg http://test.com/test8.jpg
http://test.com/test9.jpg http://test.com/test10.jpg&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;上記のような、画像リンクの10連投を含む書き込みをあぼーんします。(部分一致)&lt;/p&gt;


&lt;h4 id="NGEx_Contiguous_Anchor"&gt;アンカー5連投&lt;/h4&gt;

&lt;pre class="complete_code"&gt;&lt;code&gt;[アンカー5連投 (行内)]
MsgType = 正規(含む)
MsgBody=&amp;quot;(?:^|&amp;lt;br&amp;gt;)(?:[^&amp;lt;]*?(?:&amp;lt;a [^&amp;lt;]+&amp;lt;/a&amp;gt;|(?:&amp;amp;gt;|＞){1,2}\d+)){5}&amp;quot;
Option = 透明あぼーん, NGIDへの自動追加&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;code&gt;&amp;gt;&amp;gt;1&amp;gt;&amp;gt;2&amp;gt;&amp;gt;3&amp;gt;&amp;gt;4&amp;gt;&amp;gt;5&lt;/code&gt; のような行内にレスアンカーを5連投した書き込みをあぼーんします。&lt;/p&gt;


&lt;pre class="complete_code"&gt;&lt;code&gt;[アンカー5連投 (1行×5)]
MsgType = 正規(含む)
MsgBody=&amp;quot;(?:^|&amp;lt;br&amp;gt;)[ 　]*(?:(?:&amp;amp;gt;|＞){1,2}\d+|&amp;lt;a [^&amp;gt;]*&amp;gt;&amp;amp;gt;&amp;amp;gt;\d+(?:-\d+)*&amp;lt;/a&amp;gt;)(?:[,-]\d+)*(?:[ 　]*&amp;lt;br&amp;gt;[ 　]*(?:(?:&amp;amp;gt;|＞){1,2}\d+|&amp;lt;a [^&amp;gt;]*&amp;gt;&amp;amp;gt;&amp;amp;gt;\d+(?:-\d+)*&amp;lt;/a&amp;gt;)(?:[,-]\d+)*){4}&amp;quot;
Option = 透明あぼーん, NGIDへの自動追加&lt;/code&gt;&lt;/pre&gt;

&lt;pre class="code_block"&gt;&lt;code&gt;&amp;gt;&amp;gt;1
&amp;gt;&amp;gt;2-3
&amp;gt;5-7,9,15
&amp;gt;&amp;gt;20-30
＞31,32,33,34,35&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;上記のような、レスアンカーを改行区切りで5連投した書き込みをあぼーんします。&lt;/p&gt;



&lt;h4 id="NGEx_Contiguous_scheme"&gt;スキーム5連投 (行内)&lt;/h4&gt;

&lt;pre class="complete_code"&gt;&lt;code&gt;[スキーム5連投 (行内)]
MsgType = 正規(含む)
MsgBody="(?:^|&amp;lt;br&amp;gt;)(?:[^&amp;lt;]*?://){5}"
Option = 透明あぼーん&lt;/code&gt;&lt;/pre&gt;

&lt;pre class="code_block"&gt;&lt;code&gt;ttp:// ttp:// ttp:// ttp:// ttp://&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;上記のような、行内で &lt;code&gt;://&lt;/code&gt; を5回繰り返す書き込みをあぼーんします。&lt;br /&gt;
上の例では、間に空白を挟んでいますが、どんな文字列を挟んでもマッチします。(HTMLタグを除く)&lt;/p&gt;



&lt;h4 id="NGEx_Contiguous_Anchor-Element_HTML-Code"&gt;a要素 HTMLコード 連投 (1行×5)&lt;/h4&gt;

&lt;pre class="complete_code"&gt;&lt;code&gt;[a要素 HTMLコード 連投 (1行×5)]
MsgType = 正規(含む)
MsgBody=&amp;quot;(?:^|&amp;lt;br&amp;gt;)[ 　]*(?:&amp;amp;lt;a (?:(?!&amp;amp;gt;)[^&amp;lt;])*href *= *(?:&amp;amp;quot;|&amp;#039;)? *https?://(?:(?!&amp;amp;lt;)[^&amp;lt;])+&amp;amp;lt;/a&amp;amp;gt;(?:[ 　]*&amp;lt;br&amp;gt;)*[ 　]*){5}&amp;quot;
Option = 透明あぼーん&lt;/code&gt;&lt;/pre&gt;

&lt;pre class="code_block"&gt;&lt;code&gt;&amp;lt;a href="http://test1.com/"&amp;gt;http://test1.com/&amp;lt;/a&amp;gt;
&amp;lt;a href="http://test2.com/"&amp;gt;http://test2.com/&amp;lt;/a&amp;gt;
&amp;lt;a href="http://test3.com/"&amp;gt;http://test3.com/&amp;lt;/a&amp;gt;
&amp;lt;a href="http://test4.com/"&amp;gt;http://test4.com/&amp;lt;/a&amp;gt;
&amp;lt;a href="http://test5.com/"&amp;gt;http://test5.com/&amp;lt;/a&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;上記のような、a要素のHTMLソースを5行繰り返す書き込みをあぼーんします。&lt;/p&gt;



&lt;h4 id="NGEx_Contiguous_HTML_character_entity_reference"&gt;HTML文字実体参照 5連投&lt;/h4&gt;

&lt;pre class="complete_code"&gt;&lt;code&gt;[HTML文字実体参照 5連投]
MsgType = 正規(含む)
MsgBody="(?:&amp;amp;(?!(?:amp|gt|lt|quot);)(?:[a-z]{2,5}|#(?:0*\d{1,5}|xe?0*[\da-f]{2,5}));?[ 　]*){5}"
Option = 透明あぼーん&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;a href="http://www.google.co.jp/search?lr=lang_ja&amp;amp;ie=utf-8&amp;q=HTML%E6%96%87%E5%AD%97%E5%AE%9F%E4%BD%93%E5%8F%82%E7%85%A7"&gt;HTML文字実体参照&lt;/a&gt;、&lt;a href="http://www.google.co.jp/search?lr=lang_ja&amp;amp;amp;ie=utf-8&amp;q=%E6%95%B0%E5%80%A4%E6%96%87%E5%AD%97%E5%8F%82%E7%85%A7"&gt;数値文字参照&lt;/a&gt; を5連投した書き込みをあぼーんします。(各用語の説明はリンク先を参照してください)

システムで使われている &lt;code&gt;&amp;amp;amp; &amp;gt; &amp;lt; &amp;quot;&lt;/code&gt; は検索対象から除きます。

# 2ちゃんねるでは、シングルクオート &lt;code&gt;&amp;#039;&lt;/code&gt; はエスケープしていないようです。&lt;/p&gt;



&lt;h4 id="NGEx_Contiguous_single-line"&gt;1行文の2連投&lt;/h4&gt;

&lt;pre class="complete_code"&gt;&lt;code&gt;[1行文の2連投]
MsgType = 正規(含む)
MsgBody="(?:^|&amp;lt;br&amp;gt;)(?![ 　]*&amp;lt;br&amp;gt;)((?:[^&amp;lt;]|&amp;lt;a [^&amp;lt;]+&amp;lt;/a&amp;gt;)+)&amp;lt;br&amp;gt;\1(?=(?:&amp;lt;br&amp;gt;|$))"
Option = 透明あぼーん, NGIDへの自動追加&lt;/code&gt;&lt;/pre&gt;

&lt;pre class="code_block"&gt;&lt;code&gt;正規表現を覚えたい
正規表現を覚えたい&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;上記のような、「1行文」の繰り返しを含む書き込みをあぼーんします。&lt;br /&gt;
「1行文の3連投」に変えたい場合は、&lt;code&gt;&amp;lt;br&amp;gt;\1&lt;/code&gt; を &lt;code&gt;(&amp;lt;br&amp;gt;\1){2}&lt;/code&gt; に置換してください。&lt;/p&gt;



&lt;h4 id="NGEx_Contiguous_multiline-line"&gt;複数行の2連投&lt;/h4&gt;

&lt;pre class="complete_code"&gt;&lt;code&gt;[複数行の2連投]
MsgType = 正規(含む)
MsgBody="(?:^|&amp;lt;br&amp;gt;)(?![ 　]*&amp;lt;br&amp;gt;)((?:[^&amp;lt;]|&amp;lt;a [^&amp;lt;]+&amp;lt;/a&amp;gt;){10,}&amp;lt;br&amp;gt;.*)(?:&amp;lt;br&amp;gt;[ 　]*)*&amp;lt;br&amp;gt;\1"
Option = 透明あぼーん, NGIDへの自動追加&lt;/code&gt;&lt;/pre&gt;

&lt;pre class="code_block"&gt;&lt;code&gt;こんにちは、Janeさん。
今日もいい天気ですね。
こんにちは、Janeさん。
今日もいい天気ですね。&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;上記のような、「複数行の文章」を改行で挟んで繰り返す書き込みをあぼーんします。

間に空行を挟んでもマッチします。&lt;/p&gt;



&lt;h4 id="NGEx_Contiguous_inline-Strings"&gt;行内の文字列 5連投&lt;/h4&gt;

&lt;pre class="complete_code"&gt;&lt;code&gt;[行内の文字列 5連投]
MsgType = 正規(含む)
MsgBody="(?:^|&amp;lt;br&amp;gt;)[ 　]*([^ &amp;lt;　]{3,})(?:[ 　]+\1){4}"
Option = 透明あぼーん&lt;/code&gt;&lt;/pre&gt;

&lt;pre class="code_block"&gt;&lt;code&gt;てすと てすと てすと てすと てすと&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;上記のような「行内の文字列」を空白文字で挟んで5回繰り返す書き込みをあぼーんします。&lt;/p&gt;



&lt;h4 id="NGEx_Contiguous_Mesh_tone_mark"&gt;アミトーンの記号連投&lt;/h4&gt;

&lt;pre class="complete_code"&gt;&lt;code&gt;[アミトーンの記号連投 (1文字×4)]
MsgType = 正規(含む)
MsgBody="(["',:;])([ 　]*\1)\2{2}"
Option = 透明あぼーん, NGIDへの自動追加&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;code&gt;::::&lt;/code&gt; のように、記号1文字を連投して&lt;a href='http://www.google.co.jp/search?lr=lang_ja&amp;amp;ie=utf-8&amp;amp;q=%E3%82%A2%E3%83%9F%E3%83%88%E3%83%BC%E3%83%B3'&gt;アミトーン&lt;/a&gt;を貼るAAをあぼーんします。&lt;br /&gt;
アミトーンは巨大AAで頻繁に使われます。&lt;/p&gt;


&lt;pre class="complete_code"&gt;&lt;code&gt;[アミトーンの記号連投 (2文字×3)]
MsgType = 正規(含む)
MsgBody="(([&amp;quot;&amp;#039;,.:;])(?!\2)[&amp;quot;&amp;#039;,.:;])([ 　]*\1)\3"
Option = 透明あぼーん, NGIDへの自動追加&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;code&gt;:;:;:;:;&lt;/code&gt; のように、記号2文字を連投して&lt;a href='http://www.google.co.jp/search?lr=lang_ja&amp;amp;ie=utf-8&amp;amp;q=%E3%82%A2%E3%83%9F%E3%83%88%E3%83%BC%E3%83%B3'&gt;アミトーン&lt;/a&gt;を貼るAAをあぼーんします。&lt;/p&gt;




&lt;h4 id="NGEx_Big_AA_by_Parallel-Mark"&gt;巨大AA (記号の並列)&lt;/h4&gt;

&lt;pre class="complete_code"&gt;&lt;code&gt;[巨大AA (記号の並列)]
MsgType = 正規(含む)
MsgBody="([()/|ヽ（）／＼｜])(?= *[_　￣＿]{2})[ _　＿￣]+\1"
Option = 透明あぼーん, NGIDへの自動追加&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;code&gt;/　　/&lt;/code&gt; のように、空白文字の両側に同じ記号がある書き込みをあぼーんします。&lt;br /&gt;
巨大AAは空白文字を利用して空間を作る性質があるため、かなりのAAに対応できます。&lt;br /&gt;
&lt;code&gt;if( ($a==1) &amp;amp;&amp;amp; ($b==2) )&lt;/code&gt; のようなプログラムコードに誤爆するのを防ぐために半角空白を除く空白文字が2回以上連続した文字列に限定しています。&lt;/p&gt;



&lt;h4 id="NGEx_Big_AA_by_line-symmetric_mark"&gt;巨大AA (記号の線対称)&lt;/h4&gt;

&lt;pre class="complete_code"&gt;&lt;code&gt;[巨大AA (記号の線対称)]
MsgType = 正規(含む)
MsgBody="／[ _　＿￣]+＼|＼[ _　＿￣]+／|[(（](?! *[)）])[ _　＿￣]+[)）]"
Option = 透明あぼーん, NGIDへの自動追加&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;code&gt;／￣￣＼&lt;/code&gt; のような空白文字を挟んで記号が線対称に並ぶ書き込みをあぼーんします。&lt;br /&gt;
&lt;code&gt;￣&lt;/code&gt; は空白文字ではありませんが、空間を作るために利用されることが多いため、表現に追加しています。&lt;/p&gt;



&lt;h4 id="NGEx_Dialogue_balloon_in_Name"&gt;台詞用ふきだし (名前)&lt;/h4&gt;

&lt;pre class="complete_code"&gt;&lt;code&gt;[台詞用ふきだし (名前)]
MsgType = 正規(含む)
NGName = &amp;quot;^＼?[\-_─＿￣]+(?:(?:[/|／＼｜]{2}|[vVＶ])[\-_─＿￣]+)?[/／]?$&amp;quot;
Option = 透明あぼーん&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;漫画で台詞を表すのに使われる&lt;a href='http://ja.wikipedia.org/wiki/%E3%81%B5%E3%81%8D%E3%81%A0%E3%81%97'&gt;ふきだし&lt;/a&gt;を名前欄で使用している書き込みをあぼーんします。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7737653290432592579-6120518065946305967?l=thinkarc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thinkarc.blogspot.com/feeds/6120518065946305967/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7737653290432592579&amp;postID=6120518065946305967' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default/6120518065946305967'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default/6120518065946305967'/><link rel='alternate' type='text/html' href='http://thinkarc.blogspot.com/2007/07/janeviewngex.html' title='Jane用のNGExメモ'/><author><name>think</name><uri>http://www.blogger.com/profile/01082418605668142158</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7737653290432592579.post-7017723920752743573</id><published>2007-07-23T08:09:00.000+09:00</published><updated>2007-08-09T03:02:31.403+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ReplaceStr'/><category scheme='http://www.blogger.com/atom/ns#' term='正規表現'/><category scheme='http://www.blogger.com/atom/ns#' term='Jane'/><title type='text'>Jane用のReplaceStrメモ</title><content type='html'>&lt;p&gt;ReplaceStr.txt の覚え書き。&lt;/p&gt;

&lt;p&gt;JaneView、もしくは、JaneStyleで動作確認済みの正規表現です。&lt;br /&gt;
どちらで確認しているかは、行頭の文字列で判断してください。&lt;/p&gt;

&lt;p&gt;他の派生では、正規表現宣言部の書式が違うようなので、適宜読み替えてください。&lt;br /&gt;
(Viewの書式と互換性があるようなので、そのままでも動くとは思いますが)&lt;/p&gt;

&lt;ul&gt;
 &lt;li&gt;&lt;a href='#ReplaceStr_half_size_number'&gt;全角数字を半角数字に&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href='#ReplaceStr_half_size_alphabet'&gt;全角英字を半角英字に (小文字)&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href='#ReplaceStr_half_size_alphabet'&gt;全角英字を半角英字に (大文字)&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href='#ReplaceStr_half_size_code'&gt;全角記号を半角記号に&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href='#ReplaceStr_html_character_entity_reference'&gt;HTML文字実体参照のソースコードを表示&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href='#ReplaceStr_Omit_alphabet_or_mark'&gt;英字/記号の2連投以上を省略表示&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href='#ReplaceStr_Delete_blank_character'&gt;文頭/文末の空白文字を削除&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href='#ReplaceStr_Omit_4_line-break'&gt;空行3つ以上を空行2つに&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href='#ReplaceStr_Omit_Response-anchor_and_Line-break'&gt;「レスアンカー + 改行」を「レスアンカー + 空白」に&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href='#ReplaceStr_Omit_consecutive_hiragana'&gt;ひらがな/カタカナの3連投以上を省略表示&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href='#ReplaceStr_Transform_2ch_language_without_RegExp'&gt;2ちゃんねる語を標準語に (非正規表現)&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href='#ReplaceStr_Transform_2ch_language_in_Roman_character_typo'&gt;2ちゃんねる語を標準語に (ローマ字typo)&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href='#ReplaceStr_Transform_2ch_language_on_sentence_end'&gt;2ちゃんねる語を標準語に (文末)&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href='#ReplaceStr_DirectLink_jpg_html'&gt;.jpg.html なリンクで画像に直リンク&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href='#ReplaceStr_Kill_Affiliate_parameter'&gt;アフィリエイトパラメータを削除&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href='#ReplaceStr_Highlight_quote'&gt;引用文を着色&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;h4 id='ReplaceStr_half_size_number'&gt;全角数字を半角数字に&lt;/h4&gt;

&lt;pre class="complete_code"&gt;&lt;code&gt;０&amp;#x0009;0
１&amp;#x0009;1
２&amp;#x0009;2
３&amp;#x0009;3
４&amp;#x0009;4
５&amp;#x0009;5
６&amp;#x0009;6
７&amp;#x0009;7
８&amp;#x0009;8
９&amp;#x0009;9&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;全角数字を半角数字に置換します。&lt;br /&gt;
レス番を置換するときに、全角/半角を考慮しなくて良くなって便利です。&lt;/p&gt;



&lt;h4 id='ReplaceStr_half_size_alphabet'&gt;全角英字を半角英字に (小文字)&lt;/h4&gt;

&lt;pre class="complete_code"&gt;&lt;code&gt;ａ&amp;#x0009;a
ｂ&amp;#x0009;b
ｃ&amp;#x0009;c
ｄ&amp;#x0009;d
ｅ&amp;#x0009;e
ｆ&amp;#x0009;f
ｇ&amp;#x0009;g
ｈ&amp;#x0009;h
ｉ&amp;#x0009;i
ｊ&amp;#x0009;j
ｋ&amp;#x0009;k
ｌ&amp;#x0009;l
ｍ&amp;#x0009;m
ｎ&amp;#x0009;n
ｏ&amp;#x0009;o
ｐ&amp;#x0009;p
ｑ&amp;#x0009;q
ｒ&amp;#x0009;r
ｓ&amp;#x0009;s
ｔ&amp;#x0009;t
ｕ&amp;#x0009;u
ｖ&amp;#x0009;v
ｗ&amp;#x0009;w
ｘ&amp;#x0009;x
ｙ&amp;#x0009;y
ｚ&amp;#x0009;z&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;JaneのReplaceStrは大文字/小文字を区別しないため、英字の半角への置換は小文字/大文字のどちらか1つしか使えません。&lt;br /&gt;
(両方、指定すると先に指定した方に統一されます)&lt;/p&gt;




&lt;h4 id='ReplaceStr_half_size_alphabet'&gt;全角英字を半角英字に (大文字)&lt;/h4&gt;

&lt;pre class="complete_code"&gt;&lt;code&gt;Ａ&amp;#x0009;A
Ｂ&amp;#x0009;B
Ｃ&amp;#x0009;C
Ｄ&amp;#x0009;D
Ｅ&amp;#x0009;E
Ｆ&amp;#x0009;F
Ｇ&amp;#x0009;G
Ｈ&amp;#x0009;H
Ｉ&amp;#x0009;I
Ｊ&amp;#x0009;J
Ｋ&amp;#x0009;K
Ｌ&amp;#x0009;L
Ｍ&amp;#x0009;M
Ｎ&amp;#x0009;N
Ｏ&amp;#x0009;O
Ｐ&amp;#x0009;P
Ｑ&amp;#x0009;Q
Ｒ&amp;#x0009;R
Ｓ&amp;#x0009;S
Ｔ&amp;#x0009;T
Ｕ&amp;#x0009;U
Ｖ&amp;#x0009;V
Ｗ&amp;#x0009;W
Ｘ&amp;#x0009;X
Ｙ&amp;#x0009;Y
Ｚ&amp;#x0009;Z&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;JaneのReplaceStrは大文字/小文字を区別しないため、英字の半角への置換は小文字/大文字のどちらか1つしか使えません。&lt;br /&gt;
(両方、指定すると先に指定した方に統一されます)&lt;/p&gt;



&lt;h4 id='ReplaceStr_half_size_code'&gt;全角記号を半角記号に&lt;/h4&gt;

&lt;pre class="complete_code"&gt;&lt;code&gt;（&amp;#x0009;(
）&amp;#x0009;)
＾&amp;#x0009;^
＜&amp;#x0009;&amp;amp;lt;
＞&amp;#x0009;&amp;amp;gt;
＆&amp;#x0009;&amp;amp;amp;&lt;/code&gt;&lt;/pre&gt;


&lt;h4 id='ReplaceStr_html_character_entity_reference'&gt;HTML文字実体参照のソースコードを表示&lt;/h4&gt;

&lt;pre class="complete_code"&gt;&lt;code&gt;&amp;lt;&amp;gt;&amp;amp;(?!(?:amp|gt|lt|nbsp|quot))(?=[a-z]{2,5}|#(?:0*\d{1,5}|xe?0*[\da-f]{2,5}))&amp;#x0009;&amp;amp;amp;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;a href='http://www.google.co.jp/search?lr=lang_ja&amp;amp;ie=utf-8&amp;amp;q=HTML%E6%96%87%E5%AD%97%E5%AE%9F%E4%BD%93%E5%8F%82%E7%85%A7'&gt;HTML文字実体参照&lt;/a&gt;のソースコードを表示します。&lt;/p&gt;



&lt;h4 id='ReplaceStr_Omit_alphabet_or_mark'&gt;英字/記号の2連投以上を省略表示&lt;/h4&gt;

&lt;pre class="complete_code"&gt;&lt;code&gt;&amp;lt;&amp;gt;？{2,}&amp;#x0009;??
&amp;lt;&amp;gt;！{2,}&amp;#x0009;!!
&amp;lt;&amp;gt;w{2,}(?![\w%&amp;amp;\--/=])&amp;#x0009;w&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;全角の疑問符/感嘆符の2回以上の連続を2文字に省略表示します。&lt;br /&gt;
2文字以上の w を省略表示します。&lt;br /&gt;
(URL中の文字にマッチするのを防ぐため、w の後ろに「URLに使われる文字」がある時にはマッチしません)&lt;/p&gt;



&lt;h4 id='ReplaceStr_Delete_blank_character'&gt;文頭/文末の空白文字を削除&lt;/h4&gt;

&lt;pre class="complete_code"&gt;&lt;code&gt;&amp;lt;&amp;gt;^(?:[ 　]*&amp;lt;br&amp;gt;)+[ 　]*&amp;#x0009;
&amp;lt;&amp;gt;(?:&amp;lt;br&amp;gt;[ 　]*)+$&amp;#x0009;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;文頭/文末の半角空白/全角空白/改行を削除します。&lt;/p&gt;



&lt;h4 id='ReplaceStr_Omit_4_line-break'&gt;空行3つ以上を空行2つに&lt;/h4&gt;

&lt;pre class="complete_code"&gt;&lt;code&gt;&amp;lt;&amp;gt;(?:&amp;lt;br&amp;gt;[ 　]*){4,}&amp;#x0009;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/code&gt;&lt;/pre&gt;

空行3つ以上を空行2つに置換します。



&lt;h4 id='ReplaceStr_Omit_Response-anchor_and_Line-break'&gt;「レスアンカー + 改行」を「レスアンカー + 空白」に&lt;/h4&gt;

&lt;pre class="complete_code"&gt;&lt;code&gt;&amp;lt;&amp;gt;((?:^[ 　]*|(?:&amp;lt;br&amp;gt;[ 　]*){2})(?:(?:(?:&amp;amp;gt;){1,2}\d+|&amp;lt;a [^&amp;gt;]*&amp;gt;&amp;amp;gt;&amp;amp;gt;\d+(?:-\d+)*&amp;lt;/a&amp;gt;)(?:[,-]\d+)*[ 　]*)+)(?:[ 　]*&amp;lt;br&amp;gt;)+(?![ 　]*&amp;amp;gt;(?!&amp;amp;gt;\d))(?=(?:[^&amp;lt;]*&amp;lt;a [^&amp;gt;]*&amp;gt;[^&amp;lt;]*&amp;lt;/a&amp;gt;)*[^&amp;lt;]*(?:&amp;#x0024;|(?:&amp;lt;br&amp;gt;[ 　]*){2}))&amp;#x0009;&amp;#x0024;1&amp;amp;nbsp;&amp;amp;nbsp;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;「レスアンカー -&amp;gt; 改行 -&amp;gt; 1行のコメント」を「レスアンカー -&amp;gt; 半角空白2個 -&amp;gt; 1行のコメント」に置換します。&lt;br /&gt;
視認性を確保するため、対象の文字列と他の文字列に一行以上のマージンがある状況に限定しています。&lt;br /&gt;
置換する文字列の前後に空行or文頭or文末が存在するときにしかマッチしません。&lt;/p&gt;



&lt;h4 id='ReplaceStr_Omit_consecutive_hiragana'&gt;ひらがな/カタカナの3連投以上を省略表示&lt;/h4&gt;

&lt;pre class="complete_code"&gt;&lt;code&gt;&amp;lt;&amp;gt;([あ-んア-ン])\1{2,}&amp;#x0009;$1$1&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;「3文字以上のひらがな/カタカナ」の同一文字の3連続以上を2文字に省略表示します。&lt;br /&gt;
(例) 来たああああああ → 来たああ&lt;/p&gt;



&lt;h4 id='ReplaceStr_Transform_2ch_language_without_RegExp'&gt;2ちゃんねる語を標準語に (非正規表現)&lt;/h4&gt;

&lt;pre class="complete_code"&gt;&lt;code&gt;概出&amp;#x0009;既出
香具師&amp;#x0009;方
おまいら&amp;#x0009;お前ら
イ㌔&amp;#x0009;生きろ&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;2ちゃんねる語を標準語に変換します。&lt;/p&gt;



&lt;h4 id='ReplaceStr_Transform_2ch_language_in_Roman_character_typo'&gt;2ちゃんねる語を標準語に (ローマ字typo)&lt;/h4&gt;

&lt;pre class="complete_code"&gt;&lt;code&gt;&amp;lt;&amp;gt;うp(?!\w)&amp;#x0009;UP
&amp;lt;&amp;gt;おk(?!\w)&amp;#x0009;OK
&amp;lt;&amp;gt;日本語でOK(?!\w)&amp;#x0009;日本語で書いてください
&amp;lt;&amp;gt;wktk(?![\w%&amp;\--/=])&amp;#x0009;わくわく
&amp;lt;&amp;gt;kwsk(?![\w%&amp;\--/=])&amp;#x0009;詳しく
&amp;lt;&amp;gt;gdgd(?![\w%&amp;\--/=])&amp;#x0009;ぐだぐだ&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;ローマ字によるtypo系の2ちゃんねる語を標準語に変換します。&lt;/p&gt;



&lt;h4 id='ReplaceStr_Transform_2ch_language_on_sentence_end'&gt;2ちゃんねる語を標準語に (文末)&lt;/h4&gt;

&lt;pre class="complete_code"&gt;&lt;code&gt;&amp;lt;&amp;gt;(じゃ|[よ良]く)ね(?=[?？])&amp;#x0009;$1ない
&amp;lt;&amp;gt;ｷﾀ━+(?:ヽ?\([ ﾟ　∀]*\)ﾉ?━+)+&amp;#x0009;来た
&amp;lt;&amp;gt;([^a-z])YO(?![\w%&amp;amp;\--/=])&amp;#x0009;$1よ
&amp;lt;&amp;gt;([^a-z])NE{2,}(?![\w%&amp;amp;\--/=])&amp;#x0009;$1ねー
&amp;lt;&amp;gt;ｷﾎﾞﾝﾇ?(?=[ &amp;lt;w　]|$)&amp;#x0009;希望します
&amp;lt;&amp;gt;きぼん(?=[ &amp;lt;w　]|$)&amp;#x0009;希望します
&amp;lt;&amp;gt;乙+(?=(?:で(?:す|した))?(?:[ !&amp;lt;㌧w　。！ー～]|$))&amp;#x0009;お疲れ様
&amp;lt;&amp;gt;思われ(?=[ ()&amp;lt;w　。！]|$)&amp;#x0009;思われる
&amp;lt;&amp;gt;希ガス(?=[ ()&amp;lt;w　。！]|$)&amp;#x0009;気がする
&amp;lt;&amp;gt;もちつけ(?=[ ()&amp;lt;w　。！]|$)&amp;#x0009;落ち着け
&amp;lt;&amp;gt;しる(?=[ ()&amp;lt;w　。！]|$)&amp;#x0009;しろ
&amp;lt;&amp;gt;で[しつ](?=[ ()&amp;lt;w　。！]|$)&amp;#x0009;です
&amp;lt;&amp;gt;まつ(?=[ ()&amp;lt;w　。！]|$)&amp;#x0009;ます
&amp;lt;&amp;gt;るお(?=[ ()&amp;lt;w　。！]|$)&amp;#x0009;るよ
&amp;lt;&amp;gt;だお(?=[ ()&amp;lt;w　。！]|$)&amp;#x0009;だよ
&amp;lt;&amp;gt;ますた(?=[ ()&amp;lt;w　。！]|$)&amp;#x0009;ました
&amp;lt;&amp;gt;ですた(?=[ ()&amp;lt;w　。！]|$)&amp;#x0009;でした&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;文末にある2ちゃんねる語を標準語に変換します。&lt;br /&gt;
一部の正規表現はURL中に含むことを防ぐため、表現の 手前/直後 に「URLに使われる文字」が存在するときにマッチしません。&lt;/p&gt;



&lt;h4 id='ReplaceStr_DirectLink_jpg_html'&gt;.jpg.html なリンクで画像に直リンク&lt;/h4&gt;

&lt;pre class="complete_code"&gt;&lt;code&gt;&amp;lt;&amp;gt;\.(jpg|gif|png)(\.html?)(?=[ &amp;lt;　]|$)&amp;#x0009;.$1 [Killed $2]&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;code&gt;http://somehost.com/uploader/wallpaper.jpg.html&lt;/code&gt; のようなURLから .html を取り除きます。&lt;br /&gt;
Refererを設定するだけの ImageViewURLReplace.dat による設定をするのが面倒な人用です。&lt;/p&gt;



&lt;h4 id='ReplaceStr_Kill_Affiliate_parameter'&gt;アフィリエイトパラメータを削除&lt;/h4&gt;

&lt;pre class="complete_code"&gt;&lt;code&gt;&amp;lt;&amp;gt;://(?:www\.)?amazon\.co\.jp/((?:\w+/)+)(?:\w+-22/|(\w+)(?=\?)(?:[&amp;amp;?](?!tag=)\w+=\w+)*[&amp;amp;?]tag=\w+-22)[!#-&amp;amp;(-;=?-[\]-~]*&amp;#x0009;://www.amazon.co.jp/$1$2 [Killed Affiliate]&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Amazonのアフィリエイト用のURLからアフィリエイトを示す文字列を取り除きます。&lt;/p&gt;



&lt;h4 id='ReplaceStr_Highlight_quote'&gt;引用文を着色&lt;/h4&gt;

&lt;pre class="complete_code"&gt;&lt;code&gt;&amp;lt;rx&amp;gt;((?:^|&amp;lt;br&amp;gt;)[ 　]*)((?:&amp;amp;gt;(?!(?:&amp;amp;gt;)?[\d０－９])|＞(?![\d０－９]))[^&amp;lt;]+)&amp;#x0009;&amp;#x0024;1&amp;lt;font color=green&amp;gt;&amp;#x0024;2&amp;lt;/font&amp;gt;&amp;#x0009;msg&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;引用文を着色します。JaneStyle用。&lt;br /&gt;
JaneNidaでも動作するかも？(未確認)&lt;/p&gt;

&lt;p&gt;# &lt;code&gt;http://&lt;/code&gt; から始まるリンクテキストのリンク色を上書きしてしまうのは、仕様です。&lt;br /&gt;
# 処理の順番が関係していますが、これはJaneStyleで対応すべき問題だと思います。&lt;br /&gt;
# (「ReplaceStr → リンクテキストにアンカーを付与」の順番が望ましいと思います)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7737653290432592579-7017723920752743573?l=thinkarc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thinkarc.blogspot.com/feeds/7017723920752743573/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7737653290432592579&amp;postID=7017723920752743573' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default/7017723920752743573'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default/7017723920752743573'/><link rel='alternate' type='text/html' href='http://thinkarc.blogspot.com/2007/07/janereplacestr.html' title='Jane用のReplaceStrメモ'/><author><name>think</name><uri>http://www.blogger.com/profile/01082418605668142158</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7737653290432592579.post-8418863927864506650</id><published>2007-07-22T03:45:00.001+09:00</published><updated>2007-07-30T02:33:09.569+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ReplaceStr'/><category scheme='http://www.blogger.com/atom/ns#' term='NGEx'/><category scheme='http://www.blogger.com/atom/ns#' term='正規表現'/><category scheme='http://www.blogger.com/atom/ns#' term='Jane'/><title type='text'>JeneViewの正規表現を使用するときの注意点 正規表現編</title><content type='html'>&lt;p&gt;JaneViewの「NGEx」「ReplaceStr.txt」で扱われる正規表現で躓きそうな部分のまとめです。&lt;/p&gt;

&lt;ul&gt;
 &lt;li&gt;&lt;a href='#Regexp_case-insensitive'&gt;大文字/小文字を区別しない&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href='#Regexp_WSH_ON'&gt;WSH有効でより高度な正規表現を使用できる&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href='#Regexp_Caret'&gt;キャレット (^) は行頭ではなく、文頭にマッチする&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href='#Regexp_Character_Class_include_Multibyte_character'&gt;全角文字を文字クラスに含めることが出来る&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href='#Regexp_Searching_Shift_JIS_Code'&gt;Shift_JIS の文字列を検索している&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href='#Regexp_NGEx_oparate_before_ReplaceStr'&gt;NGEx は ReplaceStr より前に発動する&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;h4 id='Regexp_case-insensitive'&gt;大文字/小文字を区別しない&lt;/h4&gt;

&lt;p&gt;Janeの正規表現は、大文字/小文字を区別しません。&lt;/p&gt;

&lt;pre class='thinking_code'&gt;&lt;code&gt;a　… 「a」「A」にマッチ
ｗ … 「ｗ」「Ｗ」 にマッチ&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;全角の大文字/小文字も区別しない点に注意してください。正規表現の修飾子 &amp;quot;i&amp;quot; が指定されていると捉えても構いません。&lt;/p&gt;

&lt;p&gt;# 個人的には、[大文字/小文字を区別する] オプションが欲しいところです。&lt;br /&gt;
&lt;code&gt;w+&lt;/code&gt; は WWW にマッチしてしまうし、ReplaceStr.txt による英字の「全角→半角」変換は先にマッチした方 (小文字 or 大文字) に統一されてしまいます。&lt;br /&gt;
この状況を打開する方法は、今のところ存在しないと思います。&lt;/p&gt;



&lt;h4 id='Regexp_WSH_ON'&gt;WSH有効でより高度な正規表現を使用できる&lt;/h4&gt;

&lt;p&gt;[設定 -&amp;gt; 設定 -&amp;gt; 基本 -&amp;gt; その他 -&amp;gt; 正規表現にWSHを使う] にチェックを入れることで、チェックを入れないときに使えなかった正規表現を使用できるようになります。&lt;/p&gt;

&lt;pre class='thinking_code'&gt;&lt;code&gt;(?:pattern) … 変数にキャプチャせずにグループ化する
(?=pattern) … pattern に一致する文字列を肯定先読み。先読みした文字列は変数にキャプチャしない。
(?!pattern) … pattern に一致する文字列を否定先読み。先読みした文字列は変数にキャプチャしない。&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;ここに挙げた表現は全て変数にキャプチャしません。(グループ化された部分を変数に記憶せず、 で参照できなくなる)&lt;br /&gt;
そのため、メモリを節約できます。&lt;/p&gt;

&lt;p&gt;「何だかよくわからない」という人は、&lt;a href='http://www.google.co.jp/search?lr=lang_ja&amp;amp;ie=utf-8&amp;amp;q=%E5%85%88%E8%AA%AD%E3%81%BF+%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE&amp;amp;client='&gt;先読み 正規表現&lt;/a&gt;でGoogle検索してみてください。&lt;/p&gt;

&lt;p&gt;# Proxomitronの表現で表すと、(?=pattern) は&lt;a href='http://vird2002.s8.xrea.com/proxomitron/meta_character/m-chara_positive_look-ahead.html'&gt;肯定先読み&lt;/a&gt;、(?!pattern) は&lt;a href='http://vird2002.s8.xrea.com/proxomitron/meta_character/m-chara_not_function.html'&gt;NOT関数&lt;/a&gt;と同等です。&lt;/p&gt;

&lt;p&gt;# [正規表現にWSHを使う] にチェックを入れないと、TRegExpr が使用されます。&lt;br /&gt;
JaneView.txt によると、「※エラーは出ませんが、TRegExprはあまり複雑な正規表現はパースできないようで特にmigemoで短い文字列を検索した場合にはマッチングがおかしい事があります」とのこと。&lt;/p&gt;



&lt;h4 id='Regexp_Caret'&gt;キャレット (^) は行頭ではなく、文頭にマッチする&lt;/h4&gt;

&lt;p&gt;一部の正規表現ライブラリは &lt;code&gt;^&lt;/code&gt; を指定することで行頭にマッチしますが、Janeの &lt;code&gt;^&lt;/code&gt; は文頭にマッチします。&lt;br /&gt;
特別なことをしなくても、複数行にマッチさせることが可能です。&lt;br /&gt;
(dat保存時に改行がbr要素に置換されるため、Janeの内部処理では一行からなるデータを検索していると思われます)&lt;/p&gt;

&lt;p&gt;行頭にマッチさせたい場合は、次のように指定します。&lt;/p&gt;

&lt;pre class='thinking_code'&gt;&lt;code&gt;(?:^|&amp;lt;br&amp;gt;)&lt;/code&gt;&lt;/pre&gt;



&lt;h4 id='Regexp_Character_Class_include_Multibyte_character'&gt;全角文字を文字クラスに含めることが出来る&lt;/h4&gt;

&lt;p&gt;Janeの正規表現は、全角文字を文字クラスに含めることが出来ます。&lt;br /&gt;
ですので、&lt;code&gt;[ 　]&lt;/code&gt; で「半角空白/全角空白」の両方にマッチさせることが可能です。&lt;/p&gt;



&lt;h4 id='Regexp_Searching_Shift_JIS_Code'&gt;Shift_JIS の文字列を検索している&lt;/h4&gt;

&lt;p&gt;Janeが検索するのは Shift_JIS の文字列です。
このことを覚えておくと、全角文字を文字クラスで範囲指定するときに役立ちます。&lt;/p&gt;

&lt;p&gt;例えば、&lt;code&gt;[あ-ん]&lt;/code&gt; はどういう文字にマッチするでしょうか。&lt;br /&gt;
直感的にはひらがなの「あ～ん」にマッチしそうですが、実際には「ぁぃぅぇぉ」などの拗音にもマッチします。&lt;/p&gt;

&lt;p&gt;これは、ひらがなを Shift_JIS の16進数で表されるコードに変換すると、理解しやすいでしょう。&lt;/p&gt;

&lt;pre class='thinking_code'&gt;&lt;code&gt;あ … 0x82 0xa0
ぃ … 0x82 0xa1
い … 0x82 0xa2
...
ん … 0x82 0xf1&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;2つめのコードの末尾の数字を見ると、0, 1, 2 と連番になっていることが分かります。&lt;br /&gt;
文字クラスはこれらコードの数値を範囲指定しているのです。&lt;br /&gt;
[あ-ん] は &lt;code&gt;0x82 [0xa0-0xf1]&lt;/code&gt; を指定しているともいえます。(実際には、この記述法で指定できません。)&lt;/p&gt;

&lt;p&gt;特定の文字のコードを調べるには、次のどれかを使ってください。&lt;/p&gt;

&lt;ul&gt;
 &lt;li&gt;&lt;a href='http://www.pleasuresky.co.jp/strhex.php3'&gt;StrHex&lt;/a&gt; で「Code = SJIS」にチェックを入れ、[↓] ボタンを押す&lt;/li&gt;
 &lt;li&gt;&lt;a href='http://vird2002.s8.xrea.com/php/getcode.php'&gt;Proxomitron用 文字コード変換&lt;/a&gt;で [Shift_JIS] を選択して、[Encode]&lt;/li&gt;
 &lt;li&gt;&lt;a href='http://www.google.co.jp/search?lr=lang_ja&amp;amp;ie=utf-8&amp;amp;q=URL%E3%82%A8%E3%83%B3%E3%82%B3%E3%83%BC%E3%83%89+%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0&amp;amp;client='&gt;URLエンコード フォーム&lt;/a&gt;を利用して、Shift_JIS でURLエンコード&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;「Proxomitron用 文字コード変換」「URLエンコード」は上で紹介したものと書式が違いますが、数値は同じなので参考にすることが出来ます。&lt;br /&gt;
例えば、「あ」をエンコードしたとき、それぞれのコードは以下のようになります。(「82, a0」の数値が同じ事が分かると思います)&lt;/p&gt;

&lt;pre class='thinking_code'&gt;&lt;code&gt;16進数のShift_JISコード … 0x82 0xa0
Proxomitron用文字コード … [%82][%a0]
URLエンコード … %82%a0&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;# Proxomitronでは [あ-ん] を &lt;code&gt;[%82][%a0-%f1]&lt;/code&gt; と書き表せます。(Shift_JISコードの場合)&lt;/p&gt;

&lt;p&gt;# 0xnn がそれぞれ1バイトのコードを示します。&lt;br /&gt;
Shift_JISコードにおいては、ひらがな1文字に付き2バイトで表されるので、それぞれ2つ分のコードがあるわけです。&lt;br /&gt;
2バイトで1文字を表している文字を2バイト文字といいます。&lt;/p&gt;



&lt;h4&gt;ReplaceStr で置換した内容に対して、更に置換することが出来る&lt;/h4&gt;

&lt;p&gt;例えば、次の表現を ReplaceStr.txt に記述すると、&lt;/p&gt;

&lt;pre class='thinking_code'&gt;&lt;code&gt;名無し[Tab]ななしだよ
ななしだよ[Tab]名無しという名の名無し&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;「名無し」は「名無し → ななしだよ → 名無しという名の名無し」という遍歴を経て、「名無しという名の名無し」に置換されます。&lt;/p&gt;

&lt;p&gt;# 一度に置換させるより、複数回マッチさせた方が高速に置換する事もあるそうです。&lt;/p&gt;

&lt;p&gt;# 特に、全角/半角 の両方に対応したい場合、初めに半角に置換して文字種を統一しておけば、後の表現を書くのが楽になります。&lt;/p&gt;



&lt;h4 id='Regexp_NGEx_oparate_before_ReplaceStr'&gt;NGEx は ReplaceStr より前に発動する&lt;/h4&gt;

&lt;p&gt;ReplaceStr で置換した文字列に NGEx でマッチさせることは出来ません。&lt;/p&gt;

&lt;p&gt;# NGEx であぼーん(消去)した投稿内容に対して、ReplaceStr が無効なわけではないようです。&lt;br /&gt;
レスアンカーであぼーんされたレスを見たり、[Ctrl] + [数字] キー で任意のレス番の投稿内容をポップアップさせると、ReplaceStrが効いていることが分かります。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7737653290432592579-8418863927864506650?l=thinkarc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thinkarc.blogspot.com/feeds/8418863927864506650/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7737653290432592579&amp;postID=8418863927864506650' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default/8418863927864506650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default/8418863927864506650'/><link rel='alternate' type='text/html' href='http://thinkarc.blogspot.com/2007/07/jene.html' title='JeneViewの正規表現を使用するときの注意点 正規表現編'/><author><name>think</name><uri>http://www.blogger.com/profile/01082418605668142158</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7737653290432592579.post-5951027442172596186</id><published>2007-07-22T03:37:00.000+09:00</published><updated>2007-07-30T02:29:12.396+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ReplaceStr'/><category scheme='http://www.blogger.com/atom/ns#' term='NGEx'/><category scheme='http://www.blogger.com/atom/ns#' term='正規表現'/><category scheme='http://www.blogger.com/atom/ns#' term='Jane'/><title type='text'>JeneViewの正規表現を使用するときの注意点 datデータ編</title><content type='html'>&lt;p&gt;JaneViewは2ちゃんねるのスレッドデータを保存している「datファイル」を直接読んで、マッチする文字列を検索します。&lt;/p&gt;

&lt;p&gt;# 詳しくは後述しますが、datデータはブラウザに表示されている内容と微妙に違います。
通常、正規表現で改行にマッチさせるときは \r\n を使いますが、Janeで改行にマッチさせる場合は、&amp;lt;br&amp;gt; を使います。&lt;/p&gt;

&lt;p&gt;datファイルは、&lt;code&gt;&amp;lt;&amp;gt;&lt;/code&gt; 区切りのCSVフォーマットとなっています。
下記は、ある一人の投稿者のdatデータの参考例です。&lt;/p&gt;

&lt;pre class='code_block'&gt;&lt;code&gt;Jane使いの名無しさん&amp;lt;&amp;gt;sage&amp;lt;&amp;gt;2007/07/21(土) 21:00:00 ID:XXXXXXXXX&amp;lt;&amp;gt; ここは NGEx.txt を晒すスレです。 &amp;lt;br&amp;gt; 前スレ &amp;lt;br&amp;gt; NGEx.txtを晒すスレ &amp;lt;br&amp;gt; http://jane.s28.xrea.com/test/read.cgi/bbs/1068846004/ &amp;lt;&amp;gt;NGEx.txtを晒すスレ2&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;このように、datファイル上では、一人の投稿者の投稿内容は一行で表されます。
それぞれの内容は「名前&amp;lt;&amp;gt;メール欄&amp;lt;&amp;gt;投稿日時&amp;lt;&amp;gt;本文&amp;lt;&amp;gt;スレッドタイトル」となっています。
(スレッドタイトルはスレッドを立てた人のデータだけに書き込まれ、No.2 以降の投稿者のデータには書き込まれません。)&lt;/p&gt;

&lt;ul&gt;
 &lt;li&gt;&lt;a href='#refer_jane_datfile'&gt;Janeからdatファイルを参照する&lt;/a&gt;&lt;/l&gt;
 &lt;li&gt;&lt;a href='#dat_tab_character'&gt;タブ文字は半角空白に変換される&lt;/a&gt;&lt;/l&gt;
 &lt;li&gt;&lt;a href='#matching_blank_character'&gt;空白文字は [ 　] でマッチさせる&lt;/a&gt;&lt;/l&gt;
 &lt;li&gt;&lt;a href='#matching_line_break'&gt;改行は &amp;lt;br&amp;gt; でマッチさせる&lt;/a&gt;&lt;/l&gt;
 &lt;li&gt;&lt;a href='#dat_body_beginning_end'&gt;文頭/文末の空白文字を考慮する&lt;/a&gt;&lt;/l&gt;
 &lt;li&gt;&lt;a href='#matching_html_character_entity_reference'&gt;&amp;lt;&amp;gt;&amp;amp;&amp;quot; は HTML文字実体参照 でマッチさせる&lt;/a&gt;&lt;/l&gt;
 &lt;li&gt;&lt;a href='#matching_response_anchor'&gt;レスアンカーは HTML文字実体参照、a要素 でマッチさせるる&lt;/a&gt;&lt;/l&gt;
&lt;/ul&gt;


&lt;h4 id='refer_jane_datfile'&gt;Janeからdatファイルを参照する&lt;/h4&gt;

&lt;p&gt;Janeはスレッドを取得したときに、「Janeをインストールしたフォルダ\Logsch\板名\スレッド番号.dat」にdatファイルを保存します。
しかし、ここから該当スレッドを探すのは面倒なので、もう少し簡単な方法を紹介します。&lt;/p&gt;

&lt;p&gt;Janeを終了した状態で、Jane2ch.exe があるフォルダの command.dat をメモ帳などのテキストエディタで開いてください。
(command.dat がなければ、新規テキスト文書.txt を作成して、command.dat にリネームします)
そして、以下の内容をコピー＆ペーストして、上書き保存します。&lt;/p&gt;

&lt;pre class='code_block'&gt;&lt;code&gt;*各種設定=
[Tab]*datを開く="C:\Program Files\Hidemaru\Hidemaru.exe" "$LOCALDAT"
[Tab]*AAListを開く="C:\Program Files\Hidemaru\Hidemaru.exe" "$BASEPATHaalist.txt"
[Tab]*NGEx.txtを開く="C:\Program Files\Hidemaru\Hidemaru.exe" "$BASEPATHNGEx.txt"
[Tab]*Command.datを開く="C:\Program Files\Hidemaru\Hidemaru.exe" "$BASEPATHcommand.dat"
[Tab]*ImageViewURLReplace.datを開く="C:\Program Files\Hidemaru\Hidemaru.exe" "$BASEPATHImageViewURLReplace.dat"
[Tab]*ReplaceStr.txtを開く="C:\Program Files\Hidemaru\Hidemaru.exe" "$BASEPATHReplaceStr.txt"&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;# &amp;quot;C:\Program Files\Hidemaru\Hidemaru.exe&amp;quot; の部分には、任意のテキストエディタをフルパスで指定します。
[Tab] はタブ文字 ([Tab] キーを入力して出現する文字) に変換してください。&lt;/p&gt;

&lt;p&gt;Janeを起動し、何らかのスレッドを開きます。
[コマンド -&amp;gt; 各種設定 -&amp;gt; datを開く] で現在閲覧しているスレッドのdatファイルが開きます。&lt;/p&gt;

&lt;p&gt;# コマンドから確認する方法は、ReplaceStr.txt でも使えます。&lt;/p&gt;

&lt;p&gt;# 特定のレス番のdatデータを参照したいときには、[レス番を左クリック -&amp;gt; NGに追加] から確認したい項目を選択します。&lt;br /&gt;
# それぞれ、NGに追加するまでワンクッションあるので、NGに追加することなく確認できます。&lt;br /&gt;
#&lt;br /&gt;
# 名前　 … [NGNameに追加] で確認&lt;br /&gt;
# メール … [NGAddrに追加] で確認&lt;br /&gt;
# 本文　 … [datからNGWordに追加] で確認&lt;/p&gt;



&lt;h4 id='dat_tab_character'&gt;タブ文字は半角空白に変換される&lt;/h4&gt;

&lt;p&gt;タブ文字を2ちゃんねる掲示板に投稿すると、「タブ文字 → 半角空白」の変換をした上でdatに保存されます。&lt;/p&gt;



&lt;h4 id='matching_blank_character'&gt;空白文字は [ 　] でマッチさせる&lt;/h4&gt;

&lt;p&gt;空白文字とは、半角スペース, タブ文字, 改行コード, 復帰コード, NULL など、目に見えない文字のことです。
正規表現では &lt;code&gt;\s&lt;/code&gt; で表されます。&lt;/p&gt;

&lt;p&gt;全角空白も含めた空白文字にマッチさせる場合、&lt;code&gt;(?:\s|　)&lt;/code&gt; と書きたくなりますが、datに保存されるときに「タブ文字, 改行コード, 復帰コード」が別の文字列に置換されるため、もう少し簡単に書き表すことが出来ます。&lt;/p&gt;

&lt;pre class='thinking_code'&gt;&lt;code&gt;[ 　]&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;実際には、&lt;code&gt;[ 　]*&lt;/code&gt; と書くことが多いでしょう。&lt;/p&gt;



&lt;h4 id='matching_line_break'&gt;改行は &amp;lt;br&amp;gt; でマッチさせる&lt;/h4&gt;

&lt;p&gt;改行にマッチさせるときには、&lt;code&gt;\r\n&lt;/code&gt; ではなく &lt;code&gt;&amp;nbsp;&amp;lt;br&amp;gt;&amp;nbsp;&lt;/code&gt; を指定します。
(&amp;lt;br&amp;gt; の両端に空白がある点に注意してください。)&lt;/p&gt;

&lt;p&gt;ただし、非公式の掲示板の中には空白がないところもあります。
そこで、空白文字を0回以上消費させることで両方に対応させます。&lt;/p&gt;

&lt;pre class='thinking_code'&gt;&lt;code&gt;[改行1つ]
[ 　]*&amp;lt;br&amp;gt;[ 　]*

[1回以上の改行]
(?:&amp;lt;br&amp;gt;[ 　]*){1,*}

[0回以上の改行]
(?:&amp;lt;br&amp;gt;|[ 　])*&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&amp;lt;br&amp;gt; はHTMLで規定されている要素(タグ)です。
&lt;a href='http://www.google.co.jp/search?ie=utf-8&amp;amp;lr=lang_ja&amp;amp;q=br%e8%a6%81%e7%b4%a0+%22line+break%22'&gt;br要素 &amp;quot;line break&amp;quot;&lt;/a&gt;で検索すると参考サイトがHITします。
こちらは「改行するタグ」と覚えておくだけでよいと思います。&lt;/p&gt;


&lt;h4 id='dat_body_beginning_end'&gt;文頭/文末の空白文字を考慮する&lt;/h4&gt;

&lt;p&gt;公式の2ちゃんねる掲示板に書き込むと、dat保存時に本文部分の「文頭/文末」に半角空白が挿入されます。
非公式の掲示板の中には、空白が挿入されないところもあるので、空白の有無に関わらずマッチさせることで全ての掲示板に対応させます。&lt;/p&gt;

&lt;pre class='thinking_code'&gt;&lt;code&gt;[文頭にマッチ]
^[ 　]*

[文末にマッチ]
[ 　]*$

[本文が存在しない or 空白のみの本文 にマッチ]
^[ 　]*$&lt;/code&gt;&lt;/pre&gt;


&lt;h4 id='matching_html_character_entity_reference'&gt;&amp;lt;&amp;gt;&amp;amp;&amp;quot; は HTML文字実体参照 でマッチさせる&lt;/h4&gt;

&lt;p&gt;「&amp;lt;&amp;gt;&amp;amp;&amp;quot;」を2ちゃんねる掲示板に投稿すると、HTML文字実体参照に変換してdatに保存されます。
&amp;lt;&amp;gt;&amp;amp;&amp;quot; にマッチさせるには、それぞれ以下のように指定します。&lt;/p&gt;

&lt;pre class='thinking_code'&gt;&lt;code&gt;&amp;lt;　 … &amp;amp;lt;
&amp;gt;　 … &amp;amp;gt;
&amp;amp;　… &amp;amp;amp;
&amp;quot; … &amp;amp;quot;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;HTML文字実体参照はHTMLで規定されている文字です。
&lt;a href='http://www.google.co.jp/search?ie=utf-8&amp;amp;lr=lang_ja&amp;amp;q=HTML%e6%96%87%e5%ad%97%e5%ae%9f%e4%bd%93%e5%8f%82%e7%85%a7'&gt;HTML文字実体参照&lt;/a&gt; で検索すると、参考サイトが多数HITします。
なかなか使う機会が多いので、一度目を通しておくと良いかもしれません。
(&lt;code&gt;&amp;gt;&amp;gt;1&lt;/code&gt; などのレスアンカーにマッチさせる時に必要になります)&lt;/p&gt;

&lt;p&gt;# 2ちゃんねる掲示板に投稿するとき、&amp;lt;&amp;gt;&amp;quot; は自動的にエスケープ(上の書式に変換)されますが、&amp;amp; だけはエスケープされません。
従って、HTML文字実体参照を含む文字を投稿すると、HTML文字実体参照が有効なまま投稿されることになります。
NGEx, ReplaceStr.txt の正規表現など、投稿内容を改変せずに投稿したい場合は、テキストエディタ等で「&amp;amp; → &amp;amp;amp;」の一括置換を行ってから投稿してください。&lt;/p&gt;

&lt;p&gt;# 個人的には、「&amp;amp; → &amp;amp;amp;」の変換をJane側で処理してくれると嬉しかったり…。
正規表現を晒すスレッド等で、&amp;amp;だけ全角で書いている方がいたり、HTML文字実体参照が有効なことを知らないでミスする方をしばしば見かけます。&lt;/p&gt;



&lt;h4 id='matching_response_anchor'&gt;レスアンカーは HTML文字実体参照、a要素 でマッチさせる&lt;/h4&gt;

&lt;p&gt;レスアンカーとは、&amp;gt;&amp;gt;1 のようなレス番を指定するアンカーのことです。
レスアンカーは掲示板によって二種類の書式があり、完全対応するためにはそれぞれの書式を確認する必要があります。&lt;/p&gt;

&lt;pre class='code_block'&gt;&lt;code&gt;# a要素を付加しない板の場合
&amp;amp;gt;&amp;amp;gt;1

# a要素を付加する板の場合
&amp;lt;a href=&amp;quot;../test/read.cgi/win/1111111111/1&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;&amp;amp;gt;&amp;amp;gt;1&amp;lt;/a&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;両方に対応させるには、以下のように書きます。&lt;/p&gt;

&lt;pre class='thinking_code'&gt;&lt;code&gt;&amp;lt;a [^&amp;gt;]+&amp;gt;&amp;amp;gt;&amp;amp;gt;1&amp;lt;/a&amp;gt;|&amp;amp;gt;&amp;amp;gt;1&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7737653290432592579-5951027442172596186?l=thinkarc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thinkarc.blogspot.com/feeds/5951027442172596186/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7737653290432592579&amp;postID=5951027442172596186' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default/5951027442172596186'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default/5951027442172596186'/><link rel='alternate' type='text/html' href='http://thinkarc.blogspot.com/2007/07/jeneview-dat.html' title='JeneViewの正規表現を使用するときの注意点 datデータ編'/><author><name>think</name><uri>http://www.blogger.com/profile/01082418605668142158</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7737653290432592579.post-8926391443690512966</id><published>2007-07-19T08:11:00.000+09:00</published><updated>2007-07-26T02:08:05.628+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Blogger'/><category scheme='http://www.blogger.com/atom/ns#' term='IE'/><category scheme='http://www.blogger.com/atom/ns#' term='不具合'/><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><title type='text'>このブログのコードブロックをIEでコピーすると、改行なしでコピーされてしまう</title><content type='html'>&lt;p&gt;取り急ぎ、修正しましたが、納得のいく修正はできませんでした。&lt;/p&gt;

&lt;p&gt;以下、修正前のソース。&lt;/p&gt;

&lt;pre class='thinking_code'&gt;&lt;code&gt;&amp;lt;pre class='thinking_code'&amp;gt;&amp;lt;code&amp;gt;&amp;lt;br /&amp;gt;window.onload = function(){&amp;lt;br /&amp;gt;alert('Hello World !');&amp;lt;br /&amp;gt;}&amp;lt;br /&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;で、こちらが修正後のソース。&lt;/p&gt;

&lt;pre class='thinking_code'&gt;&lt;code&gt;&amp;lt;style type='text/css'&amp;gt;
/* 考察中のコード */
.thinking_code {
white-space: nowrap;
}
&amp;lt;/style&amp;gt;

&amp;lt;div class='thinking_code'&amp;gt;&amp;lt;code&amp;gt;&amp;lt;br /&amp;gt;window.onload = function(){&amp;lt;br /&amp;gt;alert('Hello World !');&amp;lt;br /&amp;gt;}&amp;lt;br /&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;code&gt;white-space: nowrap;&lt;/code&gt; もしくは、pre要素だと改行込みでコピーできなくなるようです。(IE限定)&lt;/p&gt;

&lt;p&gt;# まだ分からないところがあるので、thinking_code だけ修正しました。code_block は未修正です。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2007/07/19 13:34 追記&lt;/strong&gt;
一通り、修正しました。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2007/07/23 0:30 追記&lt;/strong&gt;
Bloggerの「br要素の自動挿入」を解除することで対応しました。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7737653290432592579-8926391443690512966?l=thinkarc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thinkarc.blogspot.com/feeds/8926391443690512966/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7737653290432592579&amp;postID=8926391443690512966' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default/8926391443690512966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default/8926391443690512966'/><link rel='alternate' type='text/html' href='http://thinkarc.blogspot.com/2007/07/ie.html' title='このブログのコードブロックをIEでコピーすると、改行なしでコピーされてしまう'/><author><name>think</name><uri>http://www.blogger.com/profile/01082418605668142158</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7737653290432592579.post-3891078504183393739</id><published>2007-07-19T01:20:00.000+09:00</published><updated>2007-07-26T02:06:53.658+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Proxomitron'/><category scheme='http://www.blogger.com/atom/ns#' term='フィルタ'/><title type='text'>ニコニコ動画フィルタ集テスト版を更新 (拡大表示からの復帰時の不具合修正)</title><content type='html'>&lt;p&gt;更新点は以下の通り。&lt;/p&gt;

&lt;dl&gt;
 &lt;dt&gt;2007/07/19&lt;/dt&gt;
 &lt;dd&gt;・動画の拡大表示からの復帰時に隠していた動画下コンテンツが再表示されてしまう不具合を修正&lt;/dd&gt;
&lt;/dl&gt;

&lt;p&gt;restorePlayer() の問題を修正しただけです。
ダウンロードは &lt;a href='http://vird2002.s8.xrea.com/download/download.php?type=proxomitron&amp;amp;file=filter_niconico_test'&gt;filter_niconico_test_20070719&lt;/a&gt; からどうぞ。&lt;/p&gt;


&lt;p&gt;&lt;a href='http://pc11.2ch.net/test/read.cgi/software/1182775043/631'&gt;flvplayer_wrapper 2007/07/16&lt;/a&gt;と組み合わせる場合は、「動画上部のニワニュース広告を削除」を無効に設定すれば共存できます。
(有効にしても動作しますが、プレイヤー上部のボタンが見切れてしまうので、一部機能が使えなくなります。)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;(2007/07/19 7:22追記)&lt;/strong&gt;
リンク先が誤っていたのを修正しました。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7737653290432592579-3891078504183393739?l=thinkarc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thinkarc.blogspot.com/feeds/3891078504183393739/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7737653290432592579&amp;postID=3891078504183393739' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default/3891078504183393739'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default/3891078504183393739'/><link rel='alternate' type='text/html' href='http://thinkarc.blogspot.com/2007/07/blog-post_5918.html' title='ニコニコ動画フィルタ集テスト版を更新 (拡大表示からの復帰時の不具合修正)'/><author><name>think</name><uri>http://www.blogger.com/profile/01082418605668142158</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7737653290432592579.post-5294103482409327354</id><published>2007-07-19T00:11:00.000+09:00</published><updated>2007-07-26T02:06:18.952+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='Proxomitron'/><title type='text'>既定の関数にユーザー定義関数を追加する</title><content type='html'>&lt;p&gt;ニコニコ動画は動画プレイヤーの拡大表示から元の表示に戻す時に、restorePlayer() というJavaScriptの関数を使用しています。&lt;/p&gt;

&lt;pre class='code_block'&gt;&lt;code&gt;function restorePlayer() {
 Event.stopObserving(window, "resize", fitPlayerToWindow, false);
 $("flvplayer").setStyle({ width: "", height: "" });
 $$("html", "body").invoke("setStyle", { margin: "", padding: "", width: "", height: "" });
 $("flvplayer_container").setStyle(containerStyle);
 $("PAGEHEADER", "WATCHHEADER", "WATCHFOOTER", "PAGEFOOTER").invoke("show");
 Element.scrollTo($("flvplayer_container"));
}&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;code&gt;.invoke("show")&lt;/code&gt; で拡大表示時に隠れていた "PAGEHEADER", "WATCHHEADER", "WATCHFOOTER", "PAGEFOOTER" のIDを持つ要素を再び表示させています。
困ったことにこれは、Proxomitron(ユーザーJavaScript)で非表示にした要素も表示させてしまいます。
そこで、restorePlayer() に再び該当要素を非表示にする動作を入れるために、作成したのが以下の関数。&lt;/p&gt;

&lt;pre class='thinking_code'&gt;&lt;code&gt;// ----------- 関数の定義

/* restorePlayer() にユーザー定義関数を追加 */
function AddrestorePlayer(func){
   var oldrestorePlayer = restorePlayer;

   restorePlayer = function(){
    oldrestorePlayer();
    func();
   }
}

/* 動画下のコンテンツ(対応ブラウザ、動画再生プレイヤー つかいかた、Amazonアソシエイト) を隠す */
function HideWatchFooter(){
   var WatchFooter = document.getElementById('WATCHFOOTER');
   WatchFooter.style.display = 'none';
}

// ----------- 実行処理

window.onload = function(){ // ページ読み込みが終了したとき
   HideWatchFooter();
   AddrestorePlayer(HideWatchFooter); // restorePlayer() に HideWatchFooter() を追加
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;このコードは、既存の関数を変更せずに、追加している仕組みが優れています。
restorePlayer() が書き換わっても追従できるのです。&lt;/p&gt;

&lt;p&gt;ちなみに、このアルゴリズムは私が考え出したものではなく、&lt;a href='http://simonwillison.net/'&gt;Simon Willison’s Weblog&lt;/a&gt; の &lt;a href='http://www.sitepoint.com/blogs/2004/05/26/closures-and-executing-javascript-on-page-load/'&gt;addLoadEvent&lt;/a&gt;が元となっています。
更にいえば、私が特別英語力に優れているわけでもなく、『&lt;a href='http://www.amazon.co.jp/dp/4839922373/'&gt;DOM Scripting 標準ガイドブック ~やさしく学ぶ、JavaScriptとDOMによるWebデザイン&lt;/a&gt;』を参考にしています。&lt;/p&gt;

&lt;p&gt;今回のように既存の関数を改変することを、専門用語で&lt;a href='http://www.google.co.jp/search?lr=lang_ja&amp;amp;ie=utf-8&amp;amp;q=%E9%96%A2%E6%95%B0%E3%81%AE%E3%82%AA%E3%83%BC%E3%83%90%E3%83%BC%E3%83%AD%E3%83%BC%E3%83%89&amp;amp;client='&gt;関数のオーバーロード&lt;/a&gt;と呼ぶようです。
よくある例は、「既存の関数と同じ関数を定義することによって、前の関数を帳消しにして、新しい関数に上書きする」手法です。&lt;/p&gt;

&lt;pre class='code_block'&gt;&lt;code&gt;/* 既存の関数 */
function restorePlayer() {
   ...(中略)...
}

/* 新しい関数 (同名の関数を定義することで古い関数を上書きする) */
function restorePlayer() {
   ...(中略)...
}&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;このように、同名の関数を再定義することで前の関数を上書きします。
この記述の後で、&lt;code&gt;restorePlayer()&lt;/code&gt; が呼び出された場合、後者の関数を実行することになります。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7737653290432592579-5294103482409327354?l=thinkarc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thinkarc.blogspot.com/feeds/5294103482409327354/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7737653290432592579&amp;postID=5294103482409327354' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default/5294103482409327354'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default/5294103482409327354'/><link rel='alternate' type='text/html' href='http://thinkarc.blogspot.com/2007/07/blog-post_19.html' title='既定の関数にユーザー定義関数を追加する'/><author><name>think</name><uri>http://www.blogger.com/profile/01082418605668142158</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7737653290432592579.post-4927801906760289502</id><published>2007-07-18T00:51:00.000+09:00</published><updated>2007-07-26T02:07:19.093+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Proxomitron'/><category scheme='http://www.blogger.com/atom/ns#' term='フィルタ'/><title type='text'>コメントが真っ白になる問題を解決したフィルタ (2007/07/19)</title><content type='html'>&lt;p&gt;&amp;lt;chat&amp;gt; の内容削除に留めたフィルタ。
空白のコメントが残るので、&lt;a href='http://pc11.2ch.net/test/read.cgi/software/1182775043/683'&gt;683氏&lt;/a&gt;のフィルタの方が良いかもしれません。&lt;/p&gt;

&lt;pre class='thinking_code'&gt;&lt;code&gt;[Patterns]
Name = &amp;quot;NicoVideo: Kill chat-item [NG command] [2007/07/16] test1&amp;quot;
Active = TRUE
URL = &amp;quot;$TYPE(oth)msg[0-9]+.nicovideo.jp/api/(^?)&amp;quot;
Limit = 512
Match = &amp;quot;$NEST((&amp;lt;chat\s[^&amp;gt;]++mail=$AV(([a-z]+\s)++$LST(NicoNico-NG_cmd)(\s*|(^?)))[^&amp;gt;]+&amp;gt;(^&amp;lt;))\0,&amp;lt;/chat&amp;gt;)&amp;quot;
Replace = &amp;quot;\0&amp;lt;/chat&amp;gt;&amp;quot;

Name = &amp;quot;NicoVideo: Kill chat-item [easiness] [2007/07/16] test1&amp;quot;
Active = TRUE
URL = &amp;quot;$TYPE(oth)msg[0-9]+.nicovideo.jp/api/(^?)&amp;quot;
Limit = 512
Match = &amp;quot;$NEST((&amp;lt;chat\s[^&amp;gt;]+&amp;gt;(^&amp;lt;))\0,&amp;quot;
        &amp;quot;([%e3][%80][%80]|\s)+&amp;quot;
        &amp;quot;((([%C0-%DF][%80-%BF]|[%E0-%EF][%80-%BF][%80-%BF]|[%F0-%F7][%80-%BF][%80-%BF][%80-%BF]|[^&amp;lt;&amp;gt;])\0&amp;quot;
        &amp;quot;($TST(\0))+)+{1,2})\1&amp;quot;
        &amp;quot;($TST(\1))+&amp;quot;
        &amp;quot;([!?%77]|[%e3]([%81][%a3]|[%83][%83])|[%ef]([%bc][%81%9f]|[%bd][%97]))+&amp;quot;
        &amp;quot;,&amp;lt;/chat&amp;gt;)&amp;quot;
Replace = &amp;quot;\0&amp;lt;/chat&amp;gt;&amp;quot;

Name = &amp;quot;NicoVideo: Kill chat-item [NGID] [2007/07/16] test1&amp;quot;
Active = TRUE
URL = &amp;quot;$TYPE(oth)msg[0-9]+.nicovideo.jp/api/(^?)&amp;quot;
Limit = 512
Match = &amp;quot;$NEST((&amp;lt;chat\s[^&amp;gt;]++user_id=$AV($LST(NicoNico-NGID))[^&amp;gt;]+&amp;gt;(^&amp;lt;))\0,&amp;lt;/chat&amp;gt;)&amp;quot;
Replace = &amp;quot;\0&amp;lt;/chat&amp;gt;&amp;quot;

Name = &amp;quot;NicoVideo: Kill chat-item [NGWord] [2007/07/16] test1&amp;quot;
Active = TRUE
URL = &amp;quot;$TYPE(oth)msg[0-9]+.nicovideo.jp/api/(^?)&amp;quot;
Limit = 512
Match = &amp;quot;$NEST((&amp;lt;chat\s([^&amp;gt;]++user_id=$AV(\9)|)[^&amp;gt;]+&amp;gt;(^&amp;lt;))\0,&amp;quot;
        &amp;quot;*$LST(NGWord-utf8)*&amp;quot;
        &amp;quot;,&amp;lt;/chat&amp;gt;)&amp;quot;
Replace = &amp;quot;\0&amp;lt;/chat&amp;gt;&amp;quot;
&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7737653290432592579-4927801906760289502?l=thinkarc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thinkarc.blogspot.com/feeds/4927801906760289502/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7737653290432592579&amp;postID=4927801906760289502' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default/4927801906760289502'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default/4927801906760289502'/><link rel='alternate' type='text/html' href='http://thinkarc.blogspot.com/2007/07/1.html' title='コメントが真っ白になる問題を解決したフィルタ (2007/07/19)'/><author><name>think</name><uri>http://www.blogger.com/profile/01082418605668142158</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7737653290432592579.post-5169517037132280710</id><published>2007-07-17T01:49:00.000+09:00</published><updated>2007-07-26T02:07:32.527+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Proxomitron'/><category scheme='http://www.blogger.com/atom/ns#' term='フィルタ'/><title type='text'>ニコニコ動画にユーザーJavaScriptを追加するProxomitronフィルタ</title><content type='html'>&lt;p&gt;機能は以下の通り。&lt;/p&gt;

&lt;ul&gt;
 &lt;li&gt;動画上部の広告を隠す (見えなくするだけで、接続はなくなりません)&lt;/li&gt;
 &lt;li&gt;動画閲覧ページで動画検索フォームに「現在の動画タイトル」をセットする&lt;/li&gt;
 &lt;li&gt;FLVのダウンロードリンクを挿入&lt;/li&gt;
&lt;/ul&gt;

   動画タイトルの見出しをクリックすると、「動画名.flv」をクリップボードへコピーして、ダウンロードリンクが右側に表出します。
   (もう一度、動画タイトルをクリックすると、ダウンロードリンクを隠します)&lt;ul&gt;
 &lt;li&gt;「あなたのブログに動画を貼り付けよう」を隠す&lt;/li&gt;
 &lt;li&gt;動画下のコンテンツ(対応ブラウザ、動画再生プレイヤー つかいかた、Amazonアソシエイト) を隠す&lt;/li&gt;
 &lt;li&gt;「ページの先頭へ」の画像を隠す&lt;/li&gt;
 &lt;li&gt;ページフッタの表示形式を変更する (折りたたむ / 隠す)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Opera9,Firefox2,IE7で動作確認。
(Firefox2が主なので、他のブラウザで動かなかったら、報告を下さい)&lt;/p&gt;

&lt;pre class='thinking_code'&gt;&lt;code&gt;[Patterns]
Name = "NicoVideo: add nicovideo_plus.js [2007/07/16] test1"
Active = TRUE
URL = "$TYPE(htm)www.nicovideo.jp/"
Limit = 8
Match = "(^(^&amp;amp;lt;/head&amp;amp;gt;))$STOP()"
Replace = "\t&amp;amp;lt;script type='text/javascript' charset='utf-8' src='http://local.ptron/js/nicovideo_plus.js'&amp;amp;gt;&amp;amp;lt;/script&amp;amp;gt;\r\n"
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;スクリプトがないと何も動作しないので、&lt;a href='http://vird2002.s8.xrea.com/download/download.php?type=proxomitron&amp;amp;file=filter_niconico_test'&gt;filter_niconico_test_20070717&lt;/a&gt; からダウンロードして使用してください。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;(2007/07/19 7:39追記)&lt;/strong&gt;
リンク先が誤っていたのを修正しました。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7737653290432592579-5169517037132280710?l=thinkarc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thinkarc.blogspot.com/feeds/5169517037132280710/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7737653290432592579&amp;postID=5169517037132280710' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default/5169517037132280710'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default/5169517037132280710'/><link rel='alternate' type='text/html' href='http://thinkarc.blogspot.com/2007/07/javascriptproxomitron.html' title='ニコニコ動画にユーザーJavaScriptを追加するProxomitronフィルタ'/><author><name>think</name><uri>http://www.blogger.com/profile/01082418605668142158</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7737653290432592579.post-1899507136288682355</id><published>2007-07-17T01:33:00.000+09:00</published><updated>2007-07-23T00:47:35.782+09:00</updated><title type='text'>ブログ開設</title><content type='html'>&lt;p&gt;このブログはちょっとした思いつきや考え事をまとめるためのメモ帳です。
管理人は&lt;a href='http://vird2002.s8.xrea.com/'&gt;Thinking Archive(仮)&lt;/a&gt;の中の人。&lt;/p&gt;

&lt;p&gt;サイトに書くまでもないちょっとしたことをこちらにメモしていけたらと考えています。
逆に言えば、こちらで雑多にメモして、まとまってきたらサイトにコンテンツとしてまとめる、という形がベストですね。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7737653290432592579-1899507136288682355?l=thinkarc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thinkarc.blogspot.com/feeds/1899507136288682355/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7737653290432592579&amp;postID=1899507136288682355' title='1 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default/1899507136288682355'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7737653290432592579/posts/default/1899507136288682355'/><link rel='alternate' type='text/html' href='http://thinkarc.blogspot.com/2007/07/blog-post.html' title='ブログ開設'/><author><name>think</name><uri>http://www.blogger.com/profile/01082418605668142158</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry></feed>
