Perl関連

Webサイト

  • 正規表現まとめサイト
  • かなり使えるPerl正規表現のまとめ 2009.3.22
    • よくつかう正規表現はCPANモジュールにはいってるのをつかうのが楽じゃないでしょうか。Perl の場合だと、よくつかう正規表現は CPAN モジュールとしてアップロードされています。
    • また、そういったモジュールをまとめて validation library としてつかえるようになっているので、それを見ればいいだけなので、まとめブログとか書く必要はありませんね。
    • 楽をしたければ、validation library を素直につかいましょう。
  • 正規表現に見切りをつけるとき 2009.1.27
    • 正規表現の能力を超えるデータはどう扱えばいいのか?一番のお勧めは、ANTLRを使って字句解析(lexer)、構文解析(parser)するプログラムを生成する方法です。一昔前なら、lex/yacc、flex/bison, JavaCCなどしか選択肢がなかったのですが、今は断然ANTLRが便利です。

Tool

Javaでの正規表現使用例

import java.util.regex.Matcher;
import java.util.regex.Pattern;
...
public void testMatch() {
  final Pattern pat = Pattern.compile(@^([^;]*)(.*);(e*)hoge(f*)");
  String s = @abc;eehogeff";
  Matcher mat = pat.matcher(s);
  if (mat.find()) {
    for(int i = 0; i <= mat.groupCount(); i++) {
      System.out.println("line=" + mat.group(i).trim();
    }
  }
}
【実行結果】
line=abc;eehogeff
line=abc
line=
line=ee
line=ff

C#での正規表現使用例

  • 以下の名前空間を使う
    using System.Text.RegularExpressions;
  • 5桁の数値か?
    Regex re = new Regex(@"\d{5}");
    if( re.IsMatch(チェックしたい文字列) )
    {
      //マッチした
    }

メールアドレスの形式チェック

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

「-99999から99999」までの数字を検索できる正規表現

> 「-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
Last-modified: 2018-07-14 (土) 21:51:17 (965d)