« 正規表現勉強会の予習をするよ! | Back To Blog Top | CSS Nite LP3のレポート書くよ! »
正規表現勉強会の復習をするよ!
2007 05 11 修正および追記
という訳で、正規表現の勉強会がありました! 忘れない内にまとめたいと思います。
割と自分用と言うか覚え書きと言うか、勉強会を見ていないと解りにくい部分が多々あると思います。
基本的な事
基本的な部分は、昨日やった予習で合っていたようです。
いやー、予習しておいたおかげで、何とか説明についていけた感じです。 何もやってなかったら危なかったわー。
新たに解った基本的な事は、「.」に関する事です。
「.」は任意の文字列という意味を持っています。 つまり「とにかく何でもいいから文字列」です。
これには半角スペースは含まれるんですが、タブや改行は「\s」や「\n」のようにエスケープする必要があるようです。
あ、でも、今手持ちのエディタで試したらタブはエスケープしないでも大丈夫でした。 言語とか環境にもよるのかもしれません。
TTで使う
livedoorはTemplate Toolkitというモノを使っています。 これ自体の説明は長くなるので、とりあえず置いておきます。
日々の業務では身近な存在で、IFとかELSEなんかが登場するヤツです。 自然と正規表現との関わりも出てくるという事で、TTの話もしてもらえました。
TTにおけるパイプの使い方
|(パイプ)はいわゆる「OR」であるというのは、昨日の予習でも書いたんですけど、TTでは少し使い方が違います。
TTではパイプは「エスケープする」という意味合いになるようです。
間違いでした。 きゅうすけさんにコメントで指摘して頂けました。 ありがとうございます!
例えば、Blogのタイトルを呼び出す変数があったとして、それを仮に[% blogtitle | html %]とします。
Blogタイトルは各ユーザーが自由に入力できる部分なので、実態参照にしないといけない&や>>を使うかもしれません。
この時、「| html」を指定しておくと、「html形式でエスケープ」という意味になるんだとか。
TTにおけるOR
ではTTで「OR」はどう表すかというと、「||」とパイプを二つ繋げる形式になります。
他に、「二つの条件を満たす」場合は「&&」だそうです。 あ、なんだかActionScriptにもこんなのあったような気が。
ちなみに、このような独自の正規表現とでも言う存在は、厳密に言えば正規表現とは呼べないものの、慣例として正規表現と呼ばれているようです。
_で文字列を連結
これは正規表現とはちょっと離れるんですが、同じ勉強会内で習った事なので書いておきます。
TTは「_」(アンダーバ-)で、文字列を連結させる事ができます。
例えば、苗字と名前を別々に取得していても、「氏名 = 苗字_名前」とすれば、変数「氏名」に「苗字」と「名前」を繋げたモノを代入できたりします。
ちなみにもっと言うと、<a href="氏名をアドレスにしたモノ">氏名</a>という要素を用意するとします。
この時、[% namelink = <a href="[% familyname_firstname_link | html %]">[% familyname_firstname | html %]</a> %] というような変数を作っておけば、以降は[% namelink %]だけで同じ要素を呼び出す事ができるようで。
あ、ちなみにこの例のTTタグ?の書き方はかなり怪しいので、あくまでこんな雰囲気だよ、という例えとして見てください。 自信ナス。
更には、HTMLで言う所の < と > がTTでは [% と %] になります。
なので、「[%」という文字列を使いたい場合には、'['_'%' とすればよいそうです。
あ、でもこれ、単純に'[%'だとダメなんでしょうか。 今度聞いてみます。
4 Comment
>Redさん
物凄い複雑かつ長大なCSSファイル内を検索する時に、役立つかもです!
多分、奥は凄く深いんでしょうけど、入り口は思ったより解りやすかったです(n'∀')η
>TTではパイプは「エスケープする」という意味合いになるようです。
「エスケープする」のは「|html」の場合で、パイプはフィルタという意味合いだったと思います。
こんな風に使ったりしてます。
[% obj.article_body | strip_html | strcut(400,"…") %]
>きゅうすけさん
うはあ、そう言えばそのような事を言われていました!
ありがとうございます!
ひぃーーーー。
むずいよこれむずいよ。でも面白そう!なんとなく『正規表現』って自分からは遠い気がして避けて通ってきたけどちゃんと勉強した方がいいなーと思いました。
がんがります(n'ω' `)
Name:Red | 2007年05月10日 22:05