正規表現 - (2010/11/13 (土) 11:54:00) の編集履歴(バックアップ)
正規表現とは
正規表現とは、簡単に言えば 検索や置換をより便利にするもの です。
正規表現が使われているところ
- 絞り込み・検索入力欄
- 非表示・キーワード
- 文字列のハイライト
- 文字列のNG
- Jane互換ファイル
- ImageViewURLReplace.dat
- ReplaceStr.txt
- URLExec.dat
- URLExec2.dat
- URLExec3.dat
参考リンク
正規表現について
- 初代管理人は正規表現の動作確認をしていません。間違った説明があるかもです
- 絶対確実ではなく、目的外にマッチする可能性もあるので注意すること
- レベルをBBSや板など適用範囲を吟味して選択すること
- 正規表現をこのページからコピペで登録する場合は、前後に余分な空白文字が付かないよう注意
- ウェイトの+は表示しようとする強さで、-の絶対値は非表示にしようとする強さ。他の登録と競合するときの判断に使われる。難しい
- 正規表現を登録しているのに、RE(正規表現)のチェックを忘れる人が多いみたい。チェック外れてないか注意
- Acはactive(有効な)。これもチェック外れてないか注意。使わないときはチェック外す
- ラベルの付いているレスなどは非表示にならない
- ラベルを付けたレスに適用したい場合は、
レス番右クリックメニュー→ラベル→ラベルの設定…で
全体設定項目の「NGワードを適用する」をチェック
- ラベルを付けたレスに適用したい場合は、
- 適用(全タブ)の全タブとはレス表示欄のタブのこと。キーワード・非表示設定ダイアログのタブではない。
適用ボタンも適用(全タブ)ボタンもダイアログの全タブを適用する。 - 複雑な正規表現NGを大量に活用するとレス表示(レス取得?)が重くなるの?
- このwikiで表示されるエスケープ記号は、半角バックスラッシュまたは半角円マークで表示されますが、どちらになるかは環境依存です。
- 本来は半角バックスラッシュが正しいのですが、日本では多くの場合、半角円マークと全く等価です。
- (厳密にはユニコードでそれぞれの表示に別々のコードが割り当てられているそうです。特殊な状況下で思いもよらぬバグの原因になるかも)
- このwikiの文字エンコードはUnicode(UTF-8)
- Webブラウザからコピペで文字列をV2Cに貼り付けるときの文字コード変換は環境依存
- AA厨正規表現など特殊記号を使うコピペが文字化けするかも。よく確認すること
- 変な正規表現を登録してしまうとフリーズしてしまうので注意。
もしフリーズしたら強制終了してusrprops.txtから注意深く問題の正規表現を削除する。
環境によっては、起動前にlockfile の削除が必要になる場合もある。 - 書き込み欄のプレビューにも正規表現が適用されるので、試しやすくて便利。プレビューの変化に追従して正規表現が適用される。
しかし、非表示・キーワード設定の設定途中で、まだダイアログがある状態ではプレビューのほうには適用されない。
ダイアログをOKしプレビューし直すとプレビューにも適用される。この辺りは少し不便かも。 - V2Cはレス表示で見たままの表現に対して正規表現を考えれば良いので、分かり易い。
改行は<br>ではなくて、常識的に\nを使う。ほっとするよね。
非表示・キーワード登録例
- 本文でマッチングした文字をハイライト
V2Cメニュー→設定→非表示・キーワード→本文KWタブで、以下を追加した後、RE(正規表現)をチェックし、ハイライトにデフォルトなどを選択する - 本文でマッチングしたレスを非表示
V2Cメニュー→設定→非表示・キーワード→本文タブで、以下を追加した後、RE(正規表現)をチェックする- 一桁ゲット厨
本文行頭に"2"や"ひとけた"などを書いているレスを非表示にする
^(?:2|ひとけた)$ - 改行厨
本文に無意味な連続改行を入れてある改行厨のレスを非表示にする
(6行以上で判定の場合)
(^|\n)([\s ]*\n){6} - ID:ほにゃらら改行
本文にID:ほにゃらら[改行]の行を含むレスを非表示にする- 投稿端末表示ありスレ専用
(^|\n)ID:[\w/\+]{9} - 投稿端末表示ありスレとなしスレ兼用
(?:^|\n)\s*?ID:[\w/+]{8,9}\s*?(?:\n|$)
- 投稿端末表示ありスレ専用
- AA厨
AAを書いてあるレスを非表示にする
(原理的に100%の確実性はないので注意)
正規表現をコピペするときは文字コードに注意
以下の内から一つを選ぶ- (\|∪|∩|⌒|从|;;;|:::|\,\,\,|''')
- (\|∪|∩|⌒|从|;;;|:::|,,,|'''|□□□|■■■|?|?|?|?|?|?)
- (\|∪|∩|⌒|从|;;;|:::|\,\,\,|'''|□□□|■■■|?|?|?|?|?|?)
- (\|∪|∩|⌒|从|;;;|:::|,,,|'''|━|┃|┏|┓|┗|┛|■■■|□□□|?|?|?|?|?|?)
- びっぱー
VIPから来た人のレスを非表示にする
(^|\W)[VV]\W*[II]\W*[PP](\W|$) - ageかsageしか書いてない
本文に"age"、"sage"、"あげ"、"さげ"しか書いてないレスを非表示にする
^(s?age|あげ|さげ)$ - 安価連続
一行にアンカーを連続で書き込んでいるレスを非表示にする(6回以上)
(>>?|>>?)\d+((>>?|>>?|,|-)\d+){5} - コピペ厨
本文にコピペを連続で書き込んでいるレスを非表示にする- コピペ厨(4文字以上3行以下4回以上)
4文字以上の行で始まる3行以下の文字列パターンが4(=1+3)回以上連続コピペされているレスを非表示にする
(?:^|\n)(.{5,}\n(.*\n){0,2})\1{3} - コピペ厨(10文字以上5行以上)
10文字以上の同じ行が5(=1+4)行以上連続するレスを非表示にする
(?:^|\n)(.{10,}\n)\1{4}
- コピペ厨(4文字以上3行以下4回以上)
- 長文
特定の行数以上、特定の文字数以上のレスを非表示- 10行以上のレスを非表示
(?:.*\n){10} - 50文字以上のレスを非表示
(?s).{50}
- 10行以上のレスを非表示
- 一桁ゲット厨
- メール欄でマッチングしたレスを非表示
V2Cメニュー→設定→非表示・キーワード→メールタブで以下を追加- sage無い
メール欄に"sage"を含んでいないレスを非表示にする
sage
!(論理を反転する)をチェックする
RE(正規表現)はチェック外して良い - 空の目欄
メール欄が空のレスを非表示にする
^$
RE(正規表現)をチェックする - sageでも空でもない目欄。明らかに故意のアゲ
メール欄が空かsageている場合は表示、それ以外はレスを非表示にする
空は故意ではなく単に初心者の可能性がある。
sage|^$
!(論理を反転する)をチェックする
RE(正規表現)をチェックする
- sage無い