タグ

関連タグで絞り込む (2)

タグの絞り込みを解除

regexpとperlに関するhiromarkのブックマーク (7)

  • Perl の正規表現の「名前付き捕捉」がとても便利

    Perl の正規表現の「名前付き捕捉」がとても便利 2014-08-07-1 [Programming] Perlの正規表現で「名前付き捕捉」を使うと、マッチした部分に名前をつけておけるのであとから参照するときに便利。 「(?<name>...)」でマッチさせると、ハッシュ「%+」に保存されて、「$+{name}」でアクセスできるのです。同じ正規表現内では「\g{name}」など。 サンプルプログラムです。日付表現にマッチしたら、年、月、日をそれぞれ別途格納。そしてそれを正規化して出力。 サンプルプログラム: #!/usr/bin/env perl use strict; use warnings; while (<DATA>) { chomp; if (m{ (?<Y>[0-9]{4})\s?年\s? (?<m>[01]?[0-9])\s?月\s? (?<d>[0-3]?[0-9])\s

    Perl の正規表現の「名前付き捕捉」がとても便利
  • PerlでTrimする! - 旧燈明日記

    VB系では、文字列の両端にあるスペースを削除するに有名なTrimがあります。 しかし、Perlでは、残念ながらTrimはありませんが、以下の正規表現で一発です。 $string =~ s/^\s*(.*?)\s*$/$1/; ちょっと解説です。 まずは、\sは、文字クラス[ \t\n\r\f](左端にスペース含む)と同義です。 始めに、文字列の先頭から\sの0回の連続にマッチさせる。 つぎに、任意1文字の0回の連続に最小マッチさせて、これを$1に記憶する。 そして、\sの0回の連続を後尾までマッチさせる。 最後に、文字列全体を$1で置換する。 以下のように、2回に分ければ、両端でも片方のみでも大丈夫です。 $string =~ s/^\s+//; $string =~ s/\s+$//; 追記:上記は、半角系のスペース文字に対するTrimです。全角系のスペースを考慮に入れると以下が参考にな

    PerlでTrimする! - 旧燈明日記
  • ランダムな文字列の取得 - Perl表技集

    # 正規表現で指定する use strict; use warnings; use String::Random; my $sr = String::Random->new(); # 英字6文字+数字2文字 my $str = $sr->randregex('[a-zA-Z]{6}\d{2}'); print $str, "\n"; # 8文字以上16文字以下 my $str2 = $sr->randregex('.{8,16}'); print $str2, "\n"; # パターンで指定する use strict; use warnings; use String::Random; my $sr = String::Random->new(); # 記号1文字+英小文字5文字+数字2文字 my $str = $sr->randpattern('!cccccnn'); print $st

  • Regexp::Commonによる正規表現で数値やurlの書式チェック - end0tknr's kipple - web写経開発

    http://search.cpan.org/dist/Regexp-Common/ Regexp::Commonには、〜::number や 〜::URI::http 等の様々な正規表現が集められています。 Regexp::Common::number まず、Regexp::Common::numberを使用すれば、数値形式(整数や小数)チェックを簡単に実装することができます。 ※1,000のようにカンマ区切もOK。 #!C:/Perl/bin/perl use strict; use warnings; use Regexp::Common qw /number/; my @test_vals = (-1000,"-1,000",-1,0,1,100,1.0,1.5,"1000A"); for my $org_val ( @test_vals ){ #整数の数値書式check (-se

    Regexp::Commonによる正規表現で数値やurlの書式チェック - end0tknr's kipple - web写経開発
  • 正規表現でCommon Prefix Search

    正規表現でCommon Prefix Search 2007-05-15-1 [Programming][Algorithm] 正規表現でCommon Prefix Searchを行う力技な方法のPerlによるサンプル。 ちょっと試すとき用のコピペ用コード片、といった感じのものです。 TRIEとかオートマトンとかでちゃんとやるのが王道ですよ。 コード: use strict; use warnings; use utf8; binmode STDOUT, ":utf8"; my $str = "あうえういあおういいういああ"; my $key = "ういあ"; my @chars = split("", $key); my $pat = join("(", @chars).(")?" x $#chars); while ($str =~ /($pat)/g) { print "$1\n";

    正規表現でCommon Prefix Search
    hiromark
    hiromark 2009/08/25
    ちょっとした実験に便利そう。
  • どんぞこ日誌(2005-07-30)

    * [メモ][Perl] splitに(?=regexp)を渡す Perlのsplitの第一引数には正規表現を渡しますが、これ、先読み宣言や後読み宣言も渡せるんですね。 これは最近HTML::Templateのソースを見る必要があって、そこでsplit(/(?=<)/,$self->{template})というのが出てきて初めて知りました。split(/</,$str)だと'<'がデリミタになるので'<'自体は削除されてしまいますが、(?=<)を渡せば'<'は消費されないため、'<'がついたまま分割できるわけです。 my $str = "<aa>bb<cc>dd\n<ee>"; my @array = split(/(?=<)/,$str); # 返るリスト # <aa>bb # <cc>dd # # <ee> 言われてみれば「なるほど」なのですが、splitに渡すなんて思いもよりませんで

    hiromark
    hiromark 2005/07/30
    以外と使えそうな小技。
  • Perl正規表現雑技

    このページは Perl5.6 を対象としています. perl スクリプトは EUC-JP で書かれることを想定しています. このページは 正規表現メーリングリスト を参考に,私が独自にメモとしてまとめたものです. このページの正規表現やスクリプトについての詳しい説明, わかりやすい説明はおそらくできません. このページに書かれているスクリプトは, 個人の責任において実行してください. このページに書かれているスクリプトの 利用・改造は自由 です. その際はどこかにこのページの URI( http://www.din.or.jp/~ohzaki/regex.htm )を参考として記述していただければ幸いです(任意). ご意見・ご感想・ご要望などは にお願いします.こう書いた方がいい, 動かん,わからん,バグってる,これ書け,などなどお待ちしています. このページへの リンクは自由 に張ってく

    hiromark
    hiromark 2005/05/25
    Perl で正規表現を扱うときのレシピ集。よくこんがらがるのでメモ。
  • 1