(2007-02の一覧)
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28

2007-02-09 Fri (他の年の同じ日: 2005 2006)

一蘭
2007-02-09-4 / カテゴリ: [diary] / [permlink]

開店時以来の週4食タイ

置換時に式を評価する
2007-02-09-3 / カテゴリ: [perl][正規表現] / [permlink]

/e で。割とよく使われてるはずだからサンプルだけ
C/C++ ソースの #ifdef を削る。
@define = qw/__DEBUG __WRITELOG/; # define を指定する

# $src にソースを丸ごとつっこむ

# #if-#endif
$src =~ s|^#if\s+(\w+)(.*?)^(#else(.*?))?^#endif|($1)?$2:$4|emsg;
# #ifdef-#endif
$src =~ s|^#ifdef\s+(\w+)(.*?)^(#else(.*?))?^#endif|(grep {$_ eq $1 } @define)?$2:$4|emsg;
# #ifndef-#endif
$src =~ s|^#ifndef\s+(\w+)(.*?)^(#else(.*?))?^#endif|(grep {$_ eq $1 } @define)?$4:$2|emsg;
/m で複数行マッチ、/s で . を改行にマッチさせる。
/m で複数行マッチ処理を行ってる場合、式の途中の ^ は改行直後の位置にマッチする。
else 節がない場合は $4 は空になるのでバッサリ削られる。

前回のマッチ位置から処理する
2007-02-09-2 / カテゴリ: [perl][正規表現] / [permlink]

単に繰り返したい場合は
/regexp/g;
/g オプションで、繰り返し処理される。
けど、ある正規表現にマッチした場合、その内容によって以降の処理が変化させたい、などのちょっと複雑(?)な場合は、/c /g によって、マッチ箇所を記憶させ、次に \G でその位置を参照できる。
続きを読む

エスケープされていないダブルクォート
2007-02-09-1 / カテゴリ: [perl][正規表現] / [permlink]

こんな感じかな。
$reg = qr/(?<!\\)(?:\\\\)*\"/;
手前に \ がなくて、\\ が0個以上あって " の場合。
否定後読みの (?<!\\) がないと、奇数個の逆スラッシュは、偶数個分だけが(?:\\\\)*にマッチしてしまうので NG。
前の日 / 次の日 / 最新 / 2007-02

2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12

最終更新時間: 2013-05-02 16:12