2006-01-30 Mon
RegExLib.com - Regular Expression Library
- Summary
正規表現ライブラリ.
http://www.regexlib.com/Search.aspx?k=キーワード
で正規表現を検索可能.
- Reference
Regular Expression Library -- presented by ASPSmith.com Training
http://www.regexlib.com/
- via
にぽたん研究所 - 2005-03-29 - 本邦初公開!電話番号の正規表現
http://blog.livedoor.jp/nipotan/archives/17526053.html
2004-11-30 Tue
正規表現のエスケープ
- Summary
vi 上で正規表現を扱う場合に,エスケープしなければならない文字,エスケープしてはならない文字.
| | + | 要エスケープ |
| ^ $ . * | エスケープ不要 |
| ( ) | 両方エスケープが必要 |
| { } | 初めだけエスケープが必要 |
| [ ] | エスケープ不要 |
C/Migemo を使用する際,呼び出したせ域表現をそのまま使用できないので,調べていたら発見.
C/Migemo では --vim オプションを使用すればOKらしい.
$ /usr/local/bin/cmigemo --vim --dict /usr/local/share/migemo/euc-jp/migemo-dict --word キーワード
- Reference
Stray Penguin - Linux Memo (vi)
http://www.asahi-net.or.jp/~aa4t-nngk/vi.html#search
2004-10-25 Mon
安否を気遣う正規表現
- 中越地震の安否を気遣うメッセージより
((ご?無事|大丈夫)ですか(。|、|)|心配((してい?ます|です)(。|、|)|なので(、|))|(落ち着い|電話が通じ)たら)?((至急)?(お?電話|メール)を?下さい|連絡を?(下さい|待(ち|ってい)ます))。
これにマッチしないようなメッセージのほうが勇気付けられると思う.
- 「安否を気遣うメッセージ」ランキング (対象 1000件)
| 70件 | 心配しています。連絡ください。 |
| 30件 | 連絡ください |
| 19件 | 心配しています。連絡下さい。 |
| 18件 | 連絡ください。 |
| 17件 | 落ち着いたら連絡ください |
| 17件 | 心配しています連絡ください |
| 12件 | 心配してます。連絡ください。 |
| 11件 | 落ち着いたら連絡ください。 |
| 11件 | 心配です。連絡ください。 |
| 9件 | 大丈夫ですか。連絡ください。 |
- 「こんなメッセージは勇気付けられるだろうな」と思ったメッセージ
おば様大丈夫ですか。心配しています。
- Reference
NHK - 10/23新潟県中越地震 NHK安否情報検索
http://www3.nhk.or.jp/anpi/pc/
2004-10-10 Sun
Java,PHP,.NETで始める正規表現
- Reference
MODULE.JP - 著作・雑誌記事など
http://module.jp/works.html
2004-09-26 Sun
正規表現ネタ
- 三銃士 (アトス,ポルトス,アラミス)
((ア(ト|ラミ))|ポルト)ス
((ア|ポル)ト|アラミ)ス
- Windowsのバージョン
Windows (95|98( Second Edition)?|Me|NT (Workstation|Server)|2000 (Professional|Server)|XP (Professional|(Home|Media Center|Tablet PC|64-bit) Edition))
- 納得したとき
(ふむ){2}
- 痛いとき
い(た|て)+
- via
はてなダイアリー - 髪は老害にして…。 - 2004-03-28
http://d.hatena.ne.jp/ryouen/20040328#p3
2004-07-26 Mon
Unicode の Property を利用した正規表現
- \p{Han}
漢字にマッチ
- \p{Hiragana}
ひらがなにマッチ
- \p{Katakana}
カタカナにマッチ
- Reference
perl5.8のUnicodeサポート
http://www.lr.pi.titech.ac.jp/~abekawa/perl/perl_unicode.html
module.jp - 日本語に絡むUnicodeブロックとスクリプト (正規表現)
http://module.jp/blog/regex_unicode_prop.html
Script と実際のコードポイントとの対応表
http://www.unicode.org/Public/UNIDATA/Scripts.txt
2004-04-24 Sat
正規表現デスクトップリファレンス
- Summary
O'Reilly から出版されている「 本: 詳説 正規表現 」を元に書かれている.


- Reference
本: 正規表現デスクトップリファレンス
本: 詳説 正規表現
O'Reilly Japan - Catalog - 正規表現デスクトップリファレンス
http://www.oreilly.co.jp/BOOK/regexpr/
2004-03-15 Mon
正規表現 (Pattern, Matcherクラス)
- マッチング
boolean flag = Pattern.matches("正規表現","文字列");
- 置換
Pattern p = Pattern.compile("正規表現"); Matcher m = p.matcher("置換対象文字列"); String result = m.replaceFirst("置換文字列"); String result = m.replaceAll("置換文字列");
- 分割
Pattern p = Pattern.compile("正規表現"); String[] strs = p.split("置換対象文字列");
- 注意
import java.util.regex.*;を忘れずに
- Reference
JavaAPI Documents - Pattern (Java 2 プラットフォーム SE v1.4.0)
http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/util/regex/Pattern.html
JavaでHello World 正規表現編
http://www.hellohiro.com/regex.htm
2003-08-23 Sat
Riue ちゃんの正規表現講座
- Reference
Regular Expression(Riue ちゃんの正規表現講座)
http://www.sixnine.net/regexp/
2003-01-22 Wed
Perlメモ
- Summary
やりたい事から逆引きできる.正規表現雑技が物凄い.
- http URIの正規表現
q{\b(?:https?|shttp)://(?:(?:[-_.!~*'()a-zA-Z0-9;:&=+$,]|%[0-9A-Fa-f} . q{][0-9A-Fa-f])*@)?(?:(?:[a-zA-Z0-9](?:[-a-zA-Z0-9]*[a-zA-Z0-9])?\.)} . q{*[a-zA-Z](?:[-a-zA-Z0-9]*[a-zA-Z0-9])?\.?|[0-9]+\.[0-9]+\.[0-9]+\.} . q{[0-9]+)(?::[0-9]*)?(?:/(?:[-_.!~*'()a-zA-Z0-9:@&=+$,]|%[0-9A-Fa-f]} . q{[0-9A-Fa-f])*(?:;(?:[-_.!~*'()a-zA-Z0-9:@&=+$,]|%[0-9A-Fa-f][0-9A-} . q{Fa-f])*)*(?:/(?:[-_.!~*'()a-zA-Z0-9:@&=+$,]|%[0-9A-Fa-f][0-9A-Fa-f} . q{])*(?:;(?:[-_.!~*'()a-zA-Z0-9:@&=+$,]|%[0-9A-Fa-f][0-9A-Fa-f])*)*)} . q{*)?(?:\?(?:[-_.!~*'()a-zA-Z0-9;/?:@&=+$,]|%[0-9A-Fa-f][0-9A-Fa-f])} . q{*)?(?:#(?:[-_.!~*'()a-zA-Z0-9;/?:@&=+$,]|%[0-9A-Fa-f][0-9A-Fa-f])*} . q{)?};
- 正確でないが簡単なhttp URIの正規表現
s?https?://[-_.!~*'()a-zA-Z0-9;/?:@&=+$,%#]+
- CSV形式の $line から値を取り出して @values に入れる
(値1,値2,"値3,値3","値4""値4" → 値1 値2 値3,値3 値4"値4)
{ my $tmp = $line; $tmp =~ s/(?:\x0D\x0A|[\x0D\x0A])?$/,/; @values = map {/^"(.*)"$/ ? scalar($_ = $1, s/""/"/g, $_) : $_} ($tmp =~ /("[^"]*(?:""[^"]*)*"|[^,]*),/g); }
- 配列 @array から重複した要素を取り除く
{ my %count; @array = grep(!$count{$_}++, @array); }
- 特定の項目でソートする (第 1項でソートし,さらに第 2項で降順ソートする)
@data = ('A,7,緑', 'C,6,青', 'B,4,赤', 'A,9,紫', 'A,2,黄緑', 'B,10,黄', 'C,3,青紫'); @data = map {$_->[0]} sort {$a->[1] cmp $b->[1] or $b->[2] <=> $a->[2]} map {[$_, split /,/]} @data;
- ソート後のデータ
@data = ('A,9,紫', 'A,7,緑', 'A,2,黄緑', 'B,10,黄', 'B,4,赤', 'C,6,青', 'C,3,青紫');
- Reference
大崎 博基 - Perlメモ
http://www.din.or.jp/~ohzaki/perl.htm
2003-01-11 Sat
正規表現で変数を用いる際の注意点
- 問題点
$hoge = 'hoge' という変数があった場合
huga を ahogea と置換するために
s/huga/a$hogea/;
とやっても,$hogeaという変数と解釈してしまう.
s/huga/a($hoge)a/;
とやっても,a(hoge)aとなってしまう.
- 解決法
s/huga/a${hoge}a/;
${変数名} は Perl だけでなく,Shellスクリプトなどでも応用が利くらしい.