2007幎7月25日氎曜日

Jane甚のNGExメモ

氞遠に「曞きかけ」かもしれたせん。

>1-1000

[>1-1000]
MsgType = 正芏(含む)
MsgBody="(?:>|)[1]\-(?: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-z--])\1{5}(?! *;|["'])"
Option = 透明あがヌん, NGIDぞの自動远加

"aaaaa" など、6文字以䞊の連続した英字を含む曞き蟌みをあがヌんしたす。
<span style="color: #ffffff;"> のようなCSSのカラヌコヌドに誀爆するのを防ぐための凊理を入れおありたす。

挢字15文字

[挢字15文字]
MsgType = 正芏(含む)
MsgBody="[侀-韠]{15}"
Option = 透明あがヌん, NGIDぞの自動远加

連続した15文字の挢字を含む曞き蟌みをあがヌんしたす。 どこかのスレッドから借甚させおいただきたした。

GET

[GET]
MsgType = 正芏(含む)
MsgBody="[\d-](?:げっず|ゲット|get|)"
Option = 透明あがヌん, NGIDぞの自動远加

レス番ゲッタヌをあがヌんしたす。

ただ

[ただ]
MsgType = 正芏(含む)
MsgBody="[たマ][ヌぁ]*(?:[だダ]|)[ヌぁ]+[?]"
Option = 透明あがヌん

間延びした「ただ」発蚀をあがヌんしたす。

文末䞭傷

[文末䞭傷]
MsgType = 正芏(含む)
MsgBody="(?:アホスレ|キモむ|むラネ|いらね|必死だな|最䜎だな|最悪だな|グロだな|[\((  ](?:|プ|はぁず)+)(?:$|[ w\( ]|<br>)"
Option = 透明あがヌん, NGIDぞの自動远加

文末の䞭傷発蚀をあがヌんしたす。

文意䞍明なレス

[文意䞍明なレス]
MsgType = 正芏(含む)
MsgBody="^(?:[  ]*<br>)*[  ]*(?:[ !\d- ]|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}|[vV])[\-_─ ̄]+)?[/]?$"
Option = 透明あがヌん

挫画で台詞を衚すのに䜿われるふきだしを名前欄で䜿甚しおいる曞き蟌みをあがヌんしたす。

ラベル: , ,

2007幎7月23日月曜日

Jane甚のReplaceStrメモ

ReplaceStr.txt の芚え曞き。

JaneView、もしくは、JaneStyleで動䜜確認枈みの正芏衚珟です。
どちらで確認しおいるかは、行頭の文字列で刀断しおください。

他の掟生では、正芏衚珟宣蚀郚の曞匏が違うようなので、適宜読み替えおください。
(Viewの曞匏ず互換性があるようなので、そのたたでも動くずは思いたすが)

党角数字を半角数字に

	0
	1
	2
	3
	4
	5
	6
	7
	8
	9

党角数字を半角数字に眮換したす。
レス番を眮換するずきに、党角/半角を考慮しなくお良くなっお䟿利です。

党角英字を半角英字に (小文字)

	a
	b
	c
	d
	e
	f
	g
	h
	i
	j
	k
	l
	m
	n
	o
	p
	q
	r
	s
	t
	u
	v
	w
	x
	y
	z

JaneのReplaceStrは倧文字/小文字を区別しないため、英字の半角ぞの眮換は小文字/倧文字のどちらか1぀しか䜿えたせん。
(䞡方、指定するず先に指定した方に統䞀されたす)

党角英字を半角英字に (倧文字)

	A
	B
	C
	D
	E
	F
	G
	H
	I
	J
	K
	L
	M
	N
	O
	P
	Q
	R
	S
	T
	U
	V
	W
	X
	Y
	Z

JaneのReplaceStrは倧文字/小文字を区別しないため、英字の半角ぞの眮換は小文字/倧文字のどちらか1぀しか䜿えたせん。
(䞡方、指定するず先に指定した方に統䞀されたす)

党角蚘号を半角蚘号に

	(
	)
	^
	&lt;
	&gt;
	&amp;

HTML文字実䜓参照の゜ヌスコヌドを衚瀺

<>&(?!(?:amp|gt|lt|nbsp|quot))(?=[a-z]{2,5}|#(?:0*\d{1,5}|xe?0*[\da-f]{2,5}))	&amp;

HTML文字実䜓参照の゜ヌスコヌドを衚瀺したす。

英字/蚘号の2連投以䞊を省略衚瀺

<>{2,}	??
<>{2,}	!!
<>w{2,}(?![\w%&\--/=])	w

党角の疑問笊/感嘆笊の2回以䞊の連続を2文字に省略衚瀺したす。
2文字以䞊の w を省略衚瀺したす。
(URL䞭の文字にマッチするのを防ぐため、w の埌ろに「URLに䜿われる文字」がある時にはマッチしたせん)

文頭/文末の空癜文字を削陀

<>^(?:[  ]*<br>)+[  ]*	
<>(?:<br>[  ]*)+$	

文頭/文末の半角空癜/党角空癜/改行を削陀したす。

空行3぀以䞊を空行2぀に

<>(?:<br>[  ]*){4,}	<br><br><br>
空行3぀以䞊を空行2぀に眮換したす。

「レスアンカヌ + 改行」を「レスアンカヌ + 空癜」に

<>((?:^[  ]*|(?:<br>[  ]*){2})(?:(?:(?:&gt;){1,2}\d+|<a [^>]*>&gt;&gt;\d+(?:-\d+)*</a>)(?:[,-]\d+)*[  ]*)+)(?:[  ]*<br>)+(?![  ]*&gt;(?!&gt;\d))(?=(?:[^<]*<a [^>]*>[^<]*</a>)*[^<]*(?:$|(?:<br>[  ]*){2}))	$1&nbsp;&nbsp;

「レスアンカヌ -> 改行 -> 1行のコメント」を「レスアンカヌ -> 半角空癜2個 -> 1行のコメント」に眮換したす。
芖認性を確保するため、察象の文字列ず他の文字列に䞀行以䞊のマヌゞンがある状況に限定しおいたす。
眮換する文字列の前埌に空行or文頭or文末が存圚するずきにしかマッチしたせん。

ひらがな/カタカナの3連投以䞊を省略衚瀺

<>([あ-んア-ン])\1{2,}	$1$1

「3文字以䞊のひらがな/カタカナ」の同䞀文字の3連続以䞊を2文字に省略衚瀺したす。
(䟋) 来たああああああ → 来たああ

2ちゃんねる語を暙準語に (非正芏衚珟)

抂出	既出
銙具垫	方
おたいら	お前ら
む㌔	生きろ

2ちゃんねる語を暙準語に倉換したす。

2ちゃんねる語を暙準語に (ロヌマ字typo)

<>うp(?!\w)	UP
<>おk(?!\w)	OK
<>日本語でOK(?!\w)	日本語で曞いおください
<>wktk(?![\w%&\--/=])	わくわく
<>kwsk(?![\w%&\--/=])	詳しく
<>gdgd(?![\w%&\--/=])	ぐだぐだ

ロヌマ字によるtypo系の2ちゃんねる語を暙準語に倉換したす。

2ちゃんねる語を暙準語に (文末)

<>(じゃ|[よ良]く)ね(?=[?])	$1ない
<>━+(?:ボ?\([  ∀]*\)?━+)+	来た
<>([^a-z])YO(?![\w%&\--/=])	$1よ
<>([^a-z])NE{2,}(?![\w%&\--/=])	$1ねヌ
<>?(?=[ <w ]|$)	垌望したす
<>きがん(?=[ <w ]|$)	垌望したす
<>乙+(?=(?:で(?:す|した))?(?:[ !<㌧w 。ヌ]|$))	お疲れ様
<>思われ(?=[ ()<w 。]|$)	思われる
<>垌ガス(?=[ ()<w 。]|$)	気がする
<>もち぀け(?=[ ()<w 。]|$)	萜ち着け
<>しる(?=[ ()<w 。]|$)	しろ
<>で[し぀](?=[ ()<w 。]|$)	です
<>た぀(?=[ ()<w 。]|$)	たす
<>るお(?=[ ()<w 。]|$)	るよ
<>だお(?=[ ()<w 。]|$)	だよ
<>たすた(?=[ ()<w 。]|$)	たした
<>ですた(?=[ ()<w 。]|$)	でした

文末にある2ちゃんねる語を暙準語に倉換したす。
䞀郚の正芏衚珟はURL䞭に含むこずを防ぐため、衚珟の 手前/盎埌 に「URLに䜿われる文字」が存圚するずきにマッチしたせん。

<>\.(jpg|gif|png)(\.html?)(?=[ < ]|$)	.$1 [Killed $2]

http://somehost.com/uploader/wallpaper.jpg.html のようなURLから .html を取り陀きたす。
Refererを蚭定するだけの ImageViewURLReplace.dat による蚭定をするのが面倒な人甚です。

アフィリ゚むトパラメヌタを削陀

<>://(?:www\.)?amazon\.co\.jp/((?:\w+/)+)(?:\w+-22/|(\w+)(?=\?)(?:[&?](?!tag=)\w+=\w+)*[&?]tag=\w+-22)[!#-&(-;=?-[\]-~]*	://www.amazon.co.jp/$1$2 [Killed Affiliate]

Amazonのアフィリ゚むト甚のURLからアフィリ゚むトを瀺す文字列を取り陀きたす。

匕甚文を着色

<rx>((?:^|<br>)[  ]*)((?:&gt;(?!(?:&gt;)?[\d])|(?![\d]))[^<]+)	$1<font color=green>$2</font>	msg

匕甚文を着色したす。JaneStyle甚。
JaneNidaでも動䜜するかも(未確認)

# http:// から始たるリンクテキストのリンク色を䞊曞きしおしたうのは、仕様です。
# 凊理の順番が関係しおいたすが、これはJaneStyleで察応すべき問題だず思いたす。
# (「ReplaceStr → リンクテキストにアンカヌを付䞎」の順番が望たしいず思いたす)

ラベル: , ,

2007幎7月22日日曜日

JeneViewの正芏衚珟を䜿甚するずきの泚意点 正芏衚珟線

JaneViewの「NGEx」「ReplaceStr.txt」で扱われる正芏衚珟で躓きそうな郚分のたずめです。

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

Janeの正芏衚珟は、倧文字/小文字を区別したせん。

a   「a」「A」にマッチ
 
 「」「」 にマッチ

党角の倧文字/小文字も区別しない点に泚意しおください。正芏衚珟の修食子 "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月19日朚曜日

このブログのコヌドブロックをIEでコピヌするず、改行なしでコピヌされおしたう

取り急ぎ、修正したしたが、玍埗のいく修正はできたせんでした。

以䞋、修正前の゜ヌス。

<pre class='thinking_code'><code><br />window.onload = function(){<br />alert('Hello World !');<br />}<br /></code></pre>

で、こちらが修正埌の゜ヌス。

<style type='text/css'>
/* 考察䞭のコヌド */
.thinking_code {
white-space: nowrap;
}
</style>

<div class='thinking_code'><code><br />window.onload = function(){<br />alert('Hello World !');<br />}<br /></code></div>

white-space: nowrap; もしくは、pre芁玠だず改行蟌みでコピヌできなくなるようです。(IE限定)

# ただ分からないずころがあるので、thinking_code だけ修正したした。code_block は未修正です。

2007/07/19 13:34 远蚘 䞀通り、修正したした。

2007/07/23 0:30 远蚘 Bloggerの「br芁玠の自動挿入」を解陀するこずで察応したした。

ラベル: , , ,

ニコニコ動画フィルタ集テスト版を曎新 (拡倧衚瀺からの埩垰時の䞍具合修正)

曎新点は以䞋の通り。

2007/07/19
・動画の拡倧衚瀺からの埩垰時に隠しおいた動画䞋コンテンツが再衚瀺されおしたう䞍具合を修正

restorePlayer() の問題を修正しただけです。 ダりンロヌドは filter_niconico_test_20070719 からどうぞ。

flvplayer_wrapper 2007/07/16ず組み合わせる堎合は、「動画䞊郚のニワニュヌス広告を削陀」を無効に蚭定すれば共存できたす。 (有効にしおも動䜜したすが、プレむダヌ䞊郚のボタンが芋切れおしたうので、䞀郚機胜が䜿えなくなりたす。)

(2007/07/19 7:22远蚘) リンク先が誀っおいたのを修正したした。

ラベル: ,

既定の関数にナヌザヌ定矩関数を远加する

ニコニコ動画は動画プレむダヌの拡倧衚瀺から元の衚瀺に戻す時に、restorePlayer() ずいうJavaScriptの関数を䜿甚しおいたす。

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"));
}

.invoke("show") で拡倧衚瀺時に隠れおいた "PAGEHEADER", "WATCHHEADER", "WATCHFOOTER", "PAGEFOOTER" のIDを持぀芁玠を再び衚瀺させおいたす。 困ったこずにこれは、Proxomitron(ナヌザヌJavaScript)で非衚瀺にした芁玠も衚瀺させおしたいたす。 そこで、restorePlayer() に再び該圓芁玠を非衚瀺にする動䜜を入れるために、䜜成したのが以䞋の関数。

// ----------- 関数の定矩

/* 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() を远加
}

このコヌドは、既存の関数を倉曎せずに、远加しおいる仕組みが優れおいたす。 restorePlayer() が曞き換わっおも远埓できるのです。

ちなみに、このアルゎリズムは私が考え出したものではなく、Simon Willison’s Weblog の addLoadEventが元ずなっおいたす。 曎にいえば、私が特別英語力に優れおいるわけでもなく、『DOM Scripting 暙準ガむドブック ~やさしく孊ぶ、JavaScriptずDOMによるWebデザむン』を参考にしおいたす。

今回のように既存の関数を改倉するこずを、専門甚語で関数のオヌバヌロヌドず呌ぶようです。 よくある䟋は、「既存の関数ず同じ関数を定矩するこずによっお、前の関数を垳消しにしお、新しい関数に䞊曞きする」手法です。

/* 既存の関数 */
function restorePlayer() {
   ...(äž­ç•¥)...
}

/* 新しい関数 (同名の関数を定矩するこずで叀い関数を䞊曞きする) */
function restorePlayer() {
   ...(äž­ç•¥)...
}

このように、同名の関数を再定矩するこずで前の関数を䞊曞きしたす。 この蚘述の埌で、restorePlayer() が呌び出された堎合、埌者の関数を実行するこずになりたす。

ラベル: ,

2007幎7月18日氎曜日

コメントが真っ癜になる問題を解決したフィルタ (2007/07/19)

<chat> の内容削陀に留めたフィルタ。 空癜のコメントが残るので、683氏のフィルタの方が良いかもしれたせん。

[Patterns]
Name = "NicoVideo: Kill chat-item [NG command] [2007/07/16] test1"
Active = TRUE
URL = "$TYPE(oth)msg[0-9]+.nicovideo.jp/api/(^?)"
Limit = 512
Match = "$NEST((<chat\s[^>]++mail=$AV(([a-z]+\s)++$LST(NicoNico-NG_cmd)(\s*|(^?)))[^>]+>(^<))\0,</chat>)"
Replace = "\0</chat>"

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

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

Name = "NicoVideo: Kill chat-item [NGWord] [2007/07/16] test1"
Active = TRUE
URL = "$TYPE(oth)msg[0-9]+.nicovideo.jp/api/(^?)"
Limit = 512
Match = "$NEST((<chat\s([^>]++user_id=$AV(\9)|)[^>]+>(^<))\0,"
        "*$LST(NGWord-utf8)*"
        ",</chat>)"
Replace = "\0</chat>"

ラベル: ,

2007幎7月17日火曜日

ニコニコ動画にナヌザヌJavaScriptを远加するProxomitronフィルタ

機胜は以䞋の通り。

  • 動画䞊郚の広告を隠す (芋えなくするだけで、接続はなくなりたせん)
  • 動画閲芧ペヌゞで動画怜玢フォヌムに「珟圚の動画タむトル」をセットする
  • FLVのダりンロヌドリンクを挿入
動画タむトルの芋出しをクリックするず、「動画名.flv」をクリップボヌドぞコピヌしお、ダりンロヌドリンクが右偎に衚出したす。 (もう䞀床、動画タむトルをクリックするず、ダりンロヌドリンクを隠したす)
  • 「あなたのブログに動画を貌り付けよう」を隠す
  • 動画䞋のコンテンツ(察応ブラりザ、動画再生プレむダヌ ぀かいかた、Amazonア゜シ゚むト) を隠す
  • 「ペヌゞの先頭ぞ」の画像を隠す
  • ペヌゞフッタの衚瀺圢匏を倉曎する (折りたたむ / 隠す)

Opera9,Firefox2,IE7で動䜜確認。 (Firefox2が䞻なので、他のブラりザで動かなかったら、報告を䞋さい)

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

スクリプトがないず䜕も動䜜しないので、filter_niconico_test_20070717 からダりンロヌドしお䜿甚しおください。

(2007/07/19 7:39远蚘) リンク先が誀っおいたのを修正したした。

ラベル: ,

ブログ開蚭

このブログはちょっずした思い぀きや考え事をたずめるためのメモ垳です。 管理人はThinking Archive(ä»®)の䞭の人。

サむトに曞くたでもないちょっずしたこずをこちらにメモしおいけたらず考えおいたす。 逆に蚀えば、こちらで雑倚にメモしお、たずたっおきたらサむトにコンテンツずしおたずめる、ずいう圢がベストですね。