CodingFirst

C言語、Perl、JavaScript、最近はPythonも。出来上がったものより、プログラムを書くことが好き。あと、スイーツ。

スポンサーサイト

  • このエントリーをはてなブックマークに追加
  • web拍手 by FC2
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

C言語で正規表現

  • このエントリーをはてなブックマークに追加
  • web拍手 by FC2

C言語で正規表現を使ってみた。
といっても、ライブラリたたいただけだけど。

まず、コード。

使用例

$ LANG=c svn info http://svn.apache.org/repos/asf/subversion/trunk|tcc -run ./regex.c 'Revision: (.*)' 2
Revision: 1243192,1243192

$ echo 'one-two-tree-daa' |tcc -run ./regex.c '([a-z]+)-([a-z]+)' 3
one-two,one,two

$ LANG=c svn info http://svn.apache.org/repos/asf/subversion/trunk|tcc -run ./regex.c '([[:alpha:][:blank:]]+): (.*)' 3
Path: trunk,Path,trunk
URL: http://svn.apache.org/repos/asf/subversion/trunk,URL,http://svn.apache.org/repos/asf/subversion/trunk
Repository Root: http://svn.apache.org/repos/asf,Repository Root,http://svn.apache.org/repos/asf
Repository UUID: 13f79535-47bb-0310-9956-ffa450edef68,Repository UUID,13f79535-47bb-0310-9956-ffa450edef68
Revision: 1243192,Revision,1243192
Node Kind: directory,Node Kind,directory
Last Changed Author: hwright,Last Changed Author,hwright
Last Changed Rev: 1242958,Last Changed Rev,1242958
Last Changed Date: 2012-02-11 07:10:34 +0900 (Sat, 11 Feb 2012),Last Changed Date,2012-02-11 07:10:34 +0900 (Sat, 11 Feb 2012)

POSIX準拠なregex.hを使った。
とりあえずgccで使えたんだけど、VCでも鬼車を使えばできるらしい。

使い方の詳細はググるなり、man 7 regex をみるとして、
[a-z]とか{1,2}とか(hoge|fuga)とか(.*)とか(.+)が使える。
あと、isalphaなどのisな関数を[:alpha:]と使えるとかかな。

にしても、使い勝手がよくない。
本格的に組み込むならwrapper関数を作る必要があるだろうし、
鬼車のようなライブラリを組み込むのが楽か、
C言語なら1から自作するほうがそれらしいかな。

Beautiful Code読んだ人は自作かな。


ビューティフルコードビューティフルコード
(2008/04/23)
Brian Kernighan、Jon Bentley 他

商品詳細を見る
スポンサーサイト


★☆★コメント★☆★

正規表現なら、PCRE を使ったほうが良い。

自作するという考え方はダメ。
なぜなら、車輪を再発名することになるから。

コメントありがとうございます。

PCREなるものもありましたか!勉強になります。

最近、車輪なコードは避ける風潮にありますが、コードを書くのはパズルゲームだと思うんですよ。ビューティフルコードを読んで書くのはRPGのごとく。

しかし、いつかご期待に添えるようなコードを世に発信します!

コメントの投稿

Name
Subject
Mail
URI
Comment
Pass
Secret 管理者にだけ表示を許可する

トラックバック

http://iyukki.blog56.fc2.com/tb.php/167-01cd5cea

 | HOME | 

Search

Recent Entries

Foot Print



Categories

Monthly

Recent Comments

Recent Trackbacks

Profile

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。