2007年7月22日日曜日

JeneViewの正規表現を使用するときの注意点 正規表現編

JaneViewの「NGEx」「ReplaceStr.txt」で扱われる正規表現で躓きそうな部分のまとめです。

大文字/小文字を区別しない

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

a … 「a」「A」にマッチ
w … 「w」「W」 にマッチ

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

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

WSH有効でより高度な正規表現を使用できる

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

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

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

「何だかよくわからない」という人は、先読み 正規表現でGoogle検索してみてください。

# Proxomitronの表現で表すと、(?=pattern) は肯定先読み、(?!pattern) はNOT関数と同等です。

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

キャレット (^) は行頭ではなく、文頭にマッチする

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

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

(?:^|<br>)

全角文字を文字クラスに含めることが出来る

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

Shift_JIS の文字列を検索している

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

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

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

あ … 0x82 0xa0
ぃ … 0x82 0xa1
い … 0x82 0xa2
...
ん … 0x82 0xf1

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

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

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

16進数のShift_JISコード … 0x82 0xa0
Proxomitron用文字コード … [%82][%a0]
URLエンコード … %82%a0

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

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

ReplaceStr で置換した内容に対して、更に置換することが出来る

例えば、次の表現を ReplaceStr.txt に記述すると、

名無し[Tab]ななしだよ
ななしだよ[Tab]名無しという名の名無し

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

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

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

NGEx は ReplaceStr より前に発動する

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

# NGEx であぼーん(消去)した投稿内容に対して、ReplaceStr が無効なわけではないようです。
レスアンカーであぼーんされたレスを見たり、[Ctrl] + [数字] キー で任意のレス番の投稿内容をポップアップさせると、ReplaceStrが効いていることが分かります。

ラベル: , , ,

JeneViewの正規表現を使用するときの注意点 datデータ編

JaneViewは2ちゃんねるのスレッドデータを保存している「datファイル」を直接読んで、マッチする文字列を検索します。

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

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

Jane使いの名無しさん<>sage<>2007/07/21(土) 21:00:00 ID:XXXXXXXXX<> ここは NGEx.txt を晒すスレです。 <br> 前スレ <br> NGEx.txtを晒すスレ <br> http://jane.s28.xrea.com/test/read.cgi/bbs/1068846004/ <>NGEx.txtを晒すスレ2

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

Janeからdatファイルを参照する

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

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

*各種設定=
[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"

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

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

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

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

タブ文字は半角空白に変換される

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

空白文字は [  ] でマッチさせる

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

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

[  ]

実際には、[  ]* と書くことが多いでしょう。

改行は <br> でマッチさせる

改行にマッチさせるときには、\r\n ではなく  <br>  を指定します。 (<br> の両端に空白がある点に注意してください。)

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

[改行1つ]
[  ]*<br>[  ]*

[1回以上の改行]
(?:<br>[  ]*){1,*}

[0回以上の改行]
(?:<br>|[  ])*

<br> はHTMLで規定されている要素(タグ)です。 br要素 "line break"で検索すると参考サイトがHITします。 こちらは「改行するタグ」と覚えておくだけでよいと思います。

文頭/文末の空白文字を考慮する

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

[文頭にマッチ]
^[  ]*

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

[本文が存在しない or 空白のみの本文 にマッチ]
^[  ]*$

<>&" は HTML文字実体参照 でマッチさせる

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

<  … &lt;
>  … &gt;
& … &amp;
" … &quot;

HTML文字実体参照はHTMLで規定されている文字です。 HTML文字実体参照 で検索すると、参考サイトが多数HITします。 なかなか使う機会が多いので、一度目を通しておくと良いかもしれません。 (>>1 などのレスアンカーにマッチさせる時に必要になります)

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

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

レスアンカーは HTML文字実体参照、a要素 でマッチさせる

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

# a要素を付加しない板の場合
&gt;&gt;1

# a要素を付加する板の場合
<a href="../test/read.cgi/win/1111111111/1" target="_blank">&gt;&gt;1</a>

両方に対応させるには、以下のように書きます。

<a [^>]+>&gt;&gt;1</a>|&gt;&gt;1

ラベル: , , ,

2007年7月25日水曜日

Jane用のNGExメモ

永遠に「書きかけ」かもしれません。

>1-1000

[>1-1000]
MsgType = 正規(含む)
MsgBody="(?:&gt;|>)[11]\-(?:1000|1000)"
Option = 透明あぼーん, NGIDへの自動追加

>1-1000を含む書き込みをあぼーんします。

メール欄が sage 以外

[メール欄 [Not sage]]
MailType = 正規(含まない)
MailBody="sage|^$"
Option = 透明あぼーん

メール欄が sage ではない書き込みをあぼーんします。 ただし、メール欄が空欄の記事にはマッチしません。 (投稿者が2ちゃんねるの仕様を知らずにスレッドを上げる事があるため)

4文字以下のレス

[4文字以下のレス]
MsgType = 正規(含む)
MsgBody="^(?:[  ]*<br>)*[  ]*[^<]{1,4}(?:[  ]*<br>)*[  ]*$"
Option = 透明あぼーん

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

連続英文字

[連続英文字 (6文字以上)]
MsgType = 正規(含む)
MsgBody="[^#]([a-vx-za-vx-z])\1{5}(?! *;|["'])"
Option = 透明あぼーん, NGIDへの自動追加

"aaaaa" など、6文字以上の連続した英字を含む書き込みをあぼーんします。
<span style="color: #ffffff;"> のようなCSSのカラーコードに誤爆するのを防ぐための処理を入れてあります。

漢字15文字

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

連続した15文字の漢字を含む書き込みをあぼーんします。 どこかのスレッドから借用させていただきました。

~GET

[~GET]
MsgType = 正規(含む)
MsgBody="[\d0-9](?:げっと|ゲット|get|get)"
Option = 透明あぼーん, NGIDへの自動追加

レス番ゲッターをあぼーんします。

まだ~?

[まだ~?]
MsgType = 正規(含む)
MsgBody="[まママ][~ーーぁァ]*(?:[だダ]|ダ)[~ーーぁァ]+[??]"
Option = 透明あぼーん

間延びした「まだ~?」発言をあぼーんします。

文末中傷

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

文末の中傷発言をあぼーんします。

文意不明なレス

[文意不明なレス]
MsgType = 正規(含む)
MsgBody="^(?:[  ]*<br>)*[  ]*(?:[ !\d0-9 !]|age|sage)+(?:[  ]*<br>)*[  ]*$"
Option = 透明あぼーん, NGIDへの自動追加

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

保守

[保守]
MsgType = 正規(含む)
MsgBody="^[  ]*(?:保守|ほしゅ|ホッ?シュ|hos[hy]u)[  。]*$"
Option = 透明あぼーん

保守のみの書き込みをあぼーんします。 書き込み自体は有り難いのですが、視覚スペースを増やしたいので消しています。

誤爆

[誤爆]
MsgType = 正規(含む)
MsgBody="^[  ]*↑?誤爆[  ]*$"
Option = 透明あぼーん, NGIDへの自動追加

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

オレオレ

[オレオレ]
MsgType = 正規(含む)
MsgBody="(?:(?:俺|オレ|おれ|漏れ)も?){2}"
Option = 透明あぼーん

オレオレ詐欺師を消し去ります。

「死ね」「氏ね」「市ね」

[死ね]
MsgType = 正規(含む)
MsgBody="[死氏市][  ]*ね"
Option = 透明あぼーん, NGIDへの自動追加

「死ね」「氏ね」「市ね」を含む書き込みをあぼーんします。

スクリプトによる自動書き込み

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

スクリプトによる自動書き込みをあぼーんします。 当時、猛威を振るっていたのは「AntiDojin」とか「Antilo」とかその辺りのウイルスだったと思います。 現在は脅威ではありませんが、中傷コメントにもマッチするので残してあります。

空白区切り文字

[空白区切り文字 (4文字)]
MsgType = 正規(含む)
MsgBody="(?:[ w w]+[ぁ-龠]){4}(?=[ <w w]|$)"
Option = 透明あぼーん

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

縦書き (4文字)

[縦書き (4文字)]
MsgType = 正規(含む)
MsgBody="(?:^|<br>)[  ]*[^ < ](?:(?:[  ]*<br>)+[  ]*[^ < ]){3}(?=[  ]*(?:<br>|$))"
Option = 透明あぼーん

改行を利用した縦書き4文字を含む書き込みをあぼーんします。 1行置きの縦書きにも対応しています。

投稿記事のコピペ

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

2ちゃんねるの投稿記事をコピペした書き込みをあぼーんします。 Janeのデフォルトスキン(2ちゃんねるをブラウザで見たときと同じ)からコピペした書式にしか対応していないので、全てのコピペには対応できていません。 ですが、結構マッチしてくれます。

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

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

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

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

アンカー5連投

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

>>1>>2>>3>>4>>5 のような行内にレスアンカーを5連投した書き込みをあぼーんします。

[アンカー5連投 (1行×5)]
MsgType = 正規(含む)
MsgBody="(?:^|<br>)[  ]*(?:(?:&gt;|>){1,2}\d+|<a [^>]*>&gt;&gt;\d+(?:-\d+)*</a>)(?:[,-]\d+)*(?:[  ]*<br>[  ]*(?:(?:&gt;|>){1,2}\d+|<a [^>]*>&gt;&gt;\d+(?:-\d+)*</a>)(?:[,-]\d+)*){4}"
Option = 透明あぼーん, NGIDへの自動追加
>>1
>>2-3
>5-7,9,15
>>20-30
>31,32,33,34,35

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

スキーム5連投 (行内)

[スキーム5連投 (行内)]
MsgType = 正規(含む)
MsgBody="(?:^|<br>)(?:[^<]*?://){5}"
Option = 透明あぼーん
ttp:// ttp:// ttp:// ttp:// ttp://

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

a要素 HTMLコード 連投 (1行×5)

[a要素 HTMLコード 連投 (1行×5)]
MsgType = 正規(含む)
MsgBody="(?:^|<br>)[  ]*(?:&lt;a (?:(?!&gt;)[^<])*href *= *(?:&quot;|')? *https?://(?:(?!&lt;)[^<])+&lt;/a&gt;(?:[  ]*<br>)*[  ]*){5}"
Option = 透明あぼーん
<a href="http://test1.com/">http://test1.com/</a>
<a href="http://test2.com/">http://test2.com/</a>
<a href="http://test3.com/">http://test3.com/</a>
<a href="http://test4.com/">http://test4.com/</a>
<a href="http://test5.com/">http://test5.com/</a>

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

HTML文字実体参照 5連投

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

HTML文字実体参照数値文字参照 を5連投した書き込みをあぼーんします。(各用語の説明はリンク先を参照してください) システムで使われている &amp; > < " は検索対象から除きます。 # 2ちゃんねるでは、シングルクオート ' はエスケープしていないようです。

1行文の2連投

[1行文の2連投]
MsgType = 正規(含む)
MsgBody="(?:^|<br>)(?![  ]*<br>)((?:[^<]|<a [^<]+</a>)+)<br>\1(?=(?:<br>|$))"
Option = 透明あぼーん, NGIDへの自動追加
正規表現を覚えたい
正規表現を覚えたい

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

複数行の2連投

[複数行の2連投]
MsgType = 正規(含む)
MsgBody="(?:^|<br>)(?![  ]*<br>)((?:[^<]|<a [^<]+</a>){10,}<br>.*)(?:<br>[  ]*)*<br>\1"
Option = 透明あぼーん, NGIDへの自動追加
こんにちは、Janeさん。
今日もいい天気ですね。
こんにちは、Janeさん。
今日もいい天気ですね。

上記のような、「複数行の文章」を改行で挟んで繰り返す書き込みをあぼーんします。 間に空行を挟んでもマッチします。

行内の文字列 5連投

[行内の文字列 5連投]
MsgType = 正規(含む)
MsgBody="(?:^|<br>)[  ]*([^ < ]{3,})(?:[  ]+\1){4}"
Option = 透明あぼーん
てすと てすと てすと てすと てすと

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

アミトーンの記号連投

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

:::: のように、記号1文字を連投してアミトーンを貼るAAをあぼーんします。
アミトーンは巨大AAで頻繁に使われます。

[アミトーンの記号連投 (2文字×3)]
MsgType = 正規(含む)
MsgBody="((["',.:;])(?!\2)["',.:;])([  ]*\1)\3"
Option = 透明あぼーん, NGIDへの自動追加

:;:;:;:; のように、記号2文字を連投してアミトーンを貼るAAをあぼーんします。

巨大AA (記号の並列)

[巨大AA (記号の並列)]
MsgType = 正規(含む)
MsgBody="([()/|ヽ()/\|])(?= *[_  ̄_]{2})[ _ _ ̄]+\1"
Option = 透明あぼーん, NGIDへの自動追加

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

巨大AA (記号の線対称)

[巨大AA (記号の線対称)]
MsgType = 正規(含む)
MsgBody="/[ _ _ ̄]+\|\[ _ _ ̄]+/|[((](?! *[))])[ _ _ ̄]+[))]"
Option = 透明あぼーん, NGIDへの自動追加

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

台詞用ふきだし (名前)

[台詞用ふきだし (名前)]
MsgType = 正規(含む)
NGName = "^\?[\-_─_ ̄]+(?:(?:[/|/\|]{2}|[vVV])[\-_─_ ̄]+)?[//]?$"
Option = 透明あぼーん

漫画で台詞を表すのに使われるふきだしを名前欄で使用している書き込みをあぼーんします。

ラベル: , ,