PerlにはRegexp::Assembleという便利なライブラリがあります。 複数の正規表現を受け取り、それらのいずれかにマッチする正規表現を構築するためのライブラリです。 my $ra = Regexp::Assemble->new; $ra->add( 'ab+c' ); $ra->add( 'ab+\\d*\\s+c' ); $ra->add( 'a\\w+\\d+' ); $ra->add( 'a\\d+' ); print $ra->re; # prints (?:a(?:b+(?:\d*\s+)?c|(?:\w+)?\d+)) このライブラリのGo実装を金曜日の夜から書き始めて、ようやく形になってきたので公開しました。 package main import ( "fmt" "log" "github.com/itchyny/rassemble-go" ) func main
正規表現によるバリデーション等で、完全一致を示す目的で ^ と $ を用いる方法が一般的ですが、正しくは \A と \z を用いる必要があります。Rubyの場合 ^ と $ を使って完全一致のバリデーションを行うと脆弱性が入りやすいワナとなります。PerlやPHPの場合は、Ruby程ではありませんが不具合が生じるので \A と \z を使うようにしましょう。 はじめに 大垣さんのブログエントリ「PHPer向け、Ruby/Railsの落とし穴」には、Rubyの落とし穴として、完全一致検索の指定として、正規表現の ^ と $ を指定する例が、Ruby on Rails Security Guideからの引用として紹介されています。以下の正規表現は、XSS対策として、httpスキームあるいはhttpsスキームのURLのみを許可する正規表現のつもりです。 /^https?:\/\/[^\n]+$/
『Perl ベストプラクティス』はクセの強い本ではあるが、私のプログラミングスタイルが受けた影響は少なくない。なかでも、PBPによってPerlの正規表現の/x修飾子のすばらしさを知ったことは大きい。これはPBP以前は使おうと思ったことがなかったが、今となってはこれなしに複雑な正規表現を書こうとは思わない。 /x修飾子は、正規表現中の空白を無視し、コメントを入れられるようにするための修飾子だ*1。 以下の正規表現は、Text::Xslateから抜粋したものだ。 In Text/Xslate/Util.pm: our $NUMBER = qr/ (?: (?: [0-9][0-9_]* (?: \. [0-9_]+)? \b) # decimal | (?: 0 (?: (?: [0-7_]+ ) # octal | (?: x [0-9a-fA-F_]+) # hex | (?: b [01
Apacheのmod_proxyで使えるProxyPassってディレクティブがあります。 http://httpd.apache.org/docs/2.2/ja/mod/mod_proxy.html 詳しい説明は、面倒くさいので省略しますが、リバースプロキシとして利用するときに、 ProxyPass /app http://192.168.1.100:3000 みたいな感じで、"/app"以下のアクセスは、全てバックエンドの"http://192.168.1.100:3000"に丸投げ、みたいな書き方をするのですが、このディレクティブで指定できるURLに今まで正規表現が使えなかったのですよorz ところが、2〜3ヶ月前にリリースされたApache2.2の最新版(2.2.6)では、ProxyPassMatchディレクティブが新しく追加されていて正規表現が使えるようになりました!(^^)/ *
2009年03月13日07:07 Perl perlの正規表現でUnicodeブロックを使う 今日、Unicodeブロックというものを初めて知りました。正規表現で利用できます。 例えば、半角英数字もしくは半角記号かどうかをチェックするときには、このように書けるんです。 #!/usr/bin/perl use strict; use warnings; use utf8; use Encode qw(encode_utf8); my $str = "aあ-い0bc〜d9e"; for ($str =~ /./g) { if (/\p{InBasicLatin}/) { print encode_utf8("$_ is latin\n"); } else { print encode_utf8("$_ is not latin\n"); } } \p{InBasicLatin} の部分が半角英
Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at
2007年04月19日15:00 カテゴリLightweight Languages perl - Regexp::Assembleのススメ というわけで、Regexp::Assembleのご紹介。 PERL HACKS(日本語版) [英語版] odz buffer - それ Regexp::Assembleん?ループ云々を抜きにして、こういうのは Regexp::Assemble の出番じゃないの? すでにPerl Hackers御用達のモジュールとなっていますが、まだ知らない方もいらっしゃるかも知れないので。 何をするモジュールか、といえば、以下を見れば一目瞭然でしょう。 Regexp::Assemble - Assemble multiple Regular Expressions into a single RE - search.cpan.org use Regexp::Asse
これでもう access_log をパースするときに正規表現をどう書くべきかで悩む必要がなくなった。 普通に LogFormat combined なファイルをパースするときはこれでいい。 my $foo = Regexp::Log::Common->new( format => ':extended', capture => [qw(host rfc authuser date request status bytes referer useragent)], ); my $re = $foo->regexp; my @fields = $foo->capture; while (<>) { my %data; @data{@fields} = /$re/; # do something } ちょっとカスタマイズされた場合もこんな風にして拡張が可能。 my $format = q[%ho
jokergaming สล็อตออนไลน์ที่มาแรงที่สุด เครดิตฟรี jokergaming สล็อตออนไลน์ที่มาแรงที่สุด เครดิตฟรี 100 ไม่ต้องฝาก ในวันนี้ทางเว็บไซต์ของเรา จะขอเสนอข้อมูล เกมสล็อตฟรีเครดิต 100 แบบไม่ต้องฝาก แบบไม่ต้องแชร์ เชื่อเลยว่า มันคือหนึ่งในคำถาม ที่นักพนันมือใหม่บนัสเครดิตฟรี จากเว็บตรงนั้น สามารถถอนได้จริง ๆ แล้ว โดยเรา ทำการสมัครสมาชิกกับเว็บ และเป็นการเปิดโอกาส ให้กับผู้เล่นใหม่ ๆ ได้เข้ามาทดลองเล่นเกม เ
I’m going to assume you have a basic understanding of regular expressions at this point. If you’re a regex n00b (or /n0{2}b/, as I like to call them), or if you need a quick refresher, check out my previous post on the absolute bare minimum that every programmer should know about regular expressions. You won’t be disappointed. So, without further adu, here are the five regular expressions that I
更新日: $Date: 2006-09-29 09:21:22 $ UTC ($Revision: 1.10 $) 公開日: 2004/04/13 目的 今のところ(mysql 4.0.27, 5.0.24a)、MySQLのネイティブ関数REGEXPは日本語の文字列を正しく処理できません (一方、LIKEやSUBSTRINGなどは日本語の処理に対応しています)。そこで日本語をきちんと扱える正規表現関数、mregexpというものをユーザー定義関数(UDF=User Defined Function)という仕組みを用いて作りました。 機能 パターン'あ.う'が文字列'あいう'にマッチしません。 正規表現の「.」が、任意の1文字ではなく、任意の1バイトにマッチしてしまうからです。 ● LIKEは期待通り「あいう」がマッチするが、 mysql> SELECT * FROM regexp_test
NAME DESCRIPTION Regular Expressions Backtracking Version 8 Regular Expressions WARNING on \1 vs $1 Repeated patterns matching zero-length substring Creating custom RE engines SEE ALSO NAME perlre - Perlの正規表現 DESCRIPTION このページでは、Perlの正規表現の構文を説明します。マッチング演算 子中での正規表現の使い方や様々なサンプルについては、] perlopにあるm//、s/// qr//、?? を参照してください。 マッチング操作は様々な修飾子(modifier)を持つことができます。正規 表現中に置かれ、解釈される修飾子には以下のようなものがあります。 操作の振る舞いを
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く