→Perl関連

#contents

*Webサイト [#p3de5f20]
-[[正規表現まとめサイト>http://journal.mycom.co.jp/news/2009/06/05/046/index.html]]
-[[かなり使えるPerl正規表現のまとめ>http://d.hatena.ne.jp/tokuhirom/20090321/1237629165]] 2009.3.22
--よくつかう正規表現はCPANモジュールにはいってるのをつかうのが楽じゃないでしょうか。Perl の場合だと、よくつかう正規表現は CPAN モジュールとしてアップロードされています。
--また、そういったモジュールをまとめて validation library としてつかえるようになっているので、それを見ればいいだけなので、まとめブログとか書く必要はありませんね。
--楽をしたければ、validation library を素直につかいましょう。

-[[regexp - 'test@[127.0.0.1' . "\\\x1f]" はRFC2822準拠>http://blog.livedoor.jp/dankogai/archives/51190099.html]] 2009.3.20
-[[「danコガいはもう正規表現をblogに書くな」と言わせないでくれ>http://www.geminium.com/chiba_blog/2009/03/20/151/]] 2009.3.20

-[[PHP使いはもう正規表現をblogに書くな」と言わせないでくれ>http://blog.livedoor.jp/dankogai/archives/51189905.html]] 2009.3.19
--メールアドレスの正規表現が一筋縄では行かないことは、ちょっとぐぐればすぐに出てくるし、しかも正規表現でマッチできるのはたかだか nobody@example.com、すなわちaddr-specまでで、From: Anonymous <nobody@example.com>、すなわちmailboxを正規表現でマッチするのは不可能なのはもう10年以上前から知られている
--Jeffrey E. F. Friedl氏原著による 「詳説 正規表現」にはメールアドレスはネストした コメントを持つことができるので正規表現で表わすのは不可能であると 書いてあります

-[[正規表現に見切りをつけるとき>http://leoclock.blogspot.com/2009/01/blog-post_27.html]] 2009.1.27
--正規表現の能力を超えるデータはどう扱えばいいのか?一番のお勧めは、ANTLRを使って字句解析(lexer)、構文解析(parser)するプログラムを生成する方法です。一昔前なら、lex/yacc、flex/bison, JavaCCなどしか選択肢がなかったのですが、今は断然ANTLRが便利です。

-[[Ruby正規表現の使い方>http://www.rubylife.jp/regexp/index.html]]
-[[サルにもわかる正規表現入門>http://www.mnet.ne.jp/~nakama/]]
-[[Regular Expression Information:http://www.4guysfromrolla.com/webtech/RegularExpressions.shtml]]
-[[.NETでの正規表現の使用方法:http://japan.internet.com/developer/20050822/28.html]]
-[[Perl6 Rules(新たな正規表現):http://www9.ocn.ne.jp/~ymt/perl6/rules.html]]

*Tool [#rf023159]
-[[正規表現を試すVisual REGEXP>http://www.moongift.jp/2008/03/visual_regexp/]]


*Javaでの正規表現使用例 [#p15738d4]
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 ...
 public boolean isHogeNumFormat(String arg) {
   String regexp = <正規表現の文字列>;
   Pattern pat = Pattern.compile(regexp);
   return pat.matcher(arg).matches();
 }


*C#での正規表現使用例 [#u510d3e6]
-以下の名前空間を使う
 using System.Text.RegularExpressions;

-5桁の数値か?
 Regex re = new Regex(@"\d{5}");
 if( re.IsMatch(チェックしたい文字列) )
 {
   //マッチした
 }

*メールアドレスの形式チェック [#x68efca0]
-[[PHPでメールアドレスを確認する「正しい方法」>http://d.hatena.ne.jp/j0hn/20070602]]
-[[メールアドレスかどうか調べる>http://phpspot.net/php/pg%90%B3%8BK%95%5C%8C%BB%81F%83%81%81%5B%83%8B%83A%83h%83%8C%83X%82%A9%82%C7%82%A4%82%A9%92%B2%82%D7%82%E9.html]]

-言語はPHP
 function isValid_EMAILADDR($addr)
 {
     return (
     eregi("^([a-z0-9_]|\\-|\\.|\\+)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,4}$", 
            strtolower($addr)) ? TRUE : FALSE);
 }


*「-99999から99999」までの数字を検索できる正規表現 [#p0d0ebf7]
 > 「-99999から99999」までの数字を検索できる正規表現知ってます?
 > 
 > マイナスで悩んでます。
 > 今のところ-999はOKだが999-も検索しちゃいます。これはダメなんです。
 
 #----(サンプル開始)--------------
 use strict;
 
 &test_string('0');
 &test_string('-0');
 &test_string('0-');
 &test_string('-');
 &test_string('-123');
 &test_string('123');
 &test_string('123-');
 &test_string('999999-');
 &test_string('-999999');
 &test_string('999999');
 &test_string('9999999');
 
 
 sub test_string {
     my $s = $_[0];
     if( $s =~ /^-?[0-9]{1,6}$/g ){
         print $s . "はマッチした\n";
     }
     else{
         print $s . "はマッチしなかった\n";
     }
 }
 #----(サンプルここまで)--------------
 
 【実行結果】
 0はマッチした
 -0はマッチした
 0-はマッチしなかった
 -はマッチしなかった
 -123はマッチした
 123はマッチした
 123-はマッチしなかった
 999999-はマッチしなかった
 -999999はマッチした
 999999はマッチした
 9999999はマッチしなかった

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS