トップ «前の日記(■2005-07-27) 最新 次の日記(■2005-08-01)» 編集

どんぞこ日誌

2003|08|09|10|11|12|
2004|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|
2006|01|02|03|04|05|07|08|12|
2007|01|04|08|12|
2008|01|02|03|04|06|07|08|10|11|12|
2009|01|02|04|05|06|07|08|09|11|12|
2010|01|03|04|07|08|10|11|12|
2011|01|02|03|04|05|06|07|08|10|12|
2012|01|02|03|05|06|07|08|09|10|
2013|01|02|07|08|09|
2014|08|09|
2015|08|
2016|06|07|12|
2017|01|03|08|
2018|03|

同人関連(どんぞこ楽屋) | 旧い雑文   


■2005-07-30

* [メモ][Perl] splitに(?=regexp)を渡すB!

 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に渡すなんて思いもよりませんでした。なんか色々使えそう。 (?=<)(.*?)(?<=>)とか?

 [追記] なんかrubyやjavascriptでもできるそうで(jmukp@MM、ma.la@del.icio.us)。それでは、とJava 1.4でやったら、出来ました。

本日のTrackBacks(全1件) []
_ 404 Blog Not Found:Damian & Me (■2005-08-03 03:12)

今日もDamian ConwayのTutorial. Tutorialの題目と同じタイトルのサイン本と一緒に。...