トップページ⇒tech
36コメント12KB

完全漢字対応正規表現ライブラリ「モナー」

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@#+*/%NGNG
「モナー」は完全に漢字を取り扱うことのできる Standard C++用の正規表現ライブラリです。
ASCII用の正規表現ライブラリの修正版ではなく、完全にゼロから漢字の処理を前提として設計しています。
現在はLinux/FreeBSDなどのGNU環境で使用可能です。
Vine Linuxなど、システムが「wchar_t」をUNCODEで実装している場合には UNICODEが使用できます。

心ゆくまでXMLやCGIの処理において完全漢字対応の正規表現処理の世界を堪能してください。

http://www.fuel.co.jp/~bull/monner/doc/index.html
0002デフォルトの名無しさんNGNG
wXXXXを使わずに作ることは出来ませんか?
wXXXXってまだ全然標準じゃない気がする。
0003名無しさん@#+*/%NGNG
typedef basic_string<long> NONE_wstring;
でたぶんすぐできるけど。
つーかVisual C++なんかではもうオッケーなんで
他のプローガーのSTL使用商用インテルOEMコンパイラは
当然サポートすると思うし、標準になりつつあるよ。
gccもちょっと直せばすぐ使えるし。

0004デフォルトの名無しさんNGNG
ライブラリ名にひねりがなさすぎる
0005デフォルトの名無しさんNGNG
C版がほしいよー。これ、ライセンスは?
0006デフォルトの名無しさんNGNG
なぜ正規表現のライブラリ名がモナーなんだろう・・・
ライブラリ自体は良いと思うが、
名前をなんとかしてくれ
0007名無しさん@#+*/%NGNG
>C版がほしいよー。これ、ライセンスは?
gcc用のはフリー。
Windowsの商用は似た仕様の別物としてバイナリ配布です。
C版も考えてます。
>ライブラリ名にひねりがなさすぎる
これは前座。本命はDFAバージョンだから執着してないの。

0008デフォルトの名無しさんNGNG
>本命はDFAバージョンだから執着してないの
DFA と Boyer-Moore を使った日本語regexpライブラリとしては
rexp があるけど、これと比べてどうですか?
0009名無しさん@#+*/%NGNG
egrep系じゃなくてlex系だよ。
インタープリターやDBのロジックをいじらず、
速度を上げつつワイドにするフロントエンドの
ためにある。
僕のにはブレイクスルーがあるんだ。
0010デフォルトの名無しさんNGNG
この程度の機能のものなら、並のプログラマなら
1人日で書けると思うけど…

DFA で back-reference を実現するのって難しいよ?
大丈夫?
0011名無しさん@#+*/%NGNG
一人日でも2人日でもお好きなように。
そもそもlex系にback-referenceは必要ないです。
n通り照合したらアクション全部呼ばれるんですかね。


0012デフォルトの名無しさんNGNG
オレは1日では難しいとおもう。
あと lex系と egrep系って用語もわかんないです。
探索アルゴリズムの話ですか? パターンの表記の話ですか?
0013デフォルトの名無しさんNGNG
>>12
おれも、理論だけ知ってて作れる気になってる人か、
すでに作ったことがある人のどっちかだと思った
(そういうのは「1日でつくれる」とは言わないと思う)。
後者は明らかに挙動の話でしょう。
0014名無しさん@#+*/%NGNG
前者、および使用方法。

001510NGNG
実際に作ったことがあっての発言です。>1人日

「モナー」のページを見て、すごく素人っぽいと
感じて「がんばって作ったんだろうけど、この程度
のものをブレイクスルーなんて言うのは恥ずかしい
なあ」と思った次第です。lex っぽい使い方を想定
しているようだけど、そんな限定された使い方しか
できないなら、なおさらブレイクスルーとは言い難い。

ああいった基本的な正規表現をサポートするライブラリ
を作るのはアルゴリズムの教科書でも見ながらやれば
簡単にできることです。本当に大変なのは、Perl や
Ruby の正規表現と同程度の機能をサポートして、
現実的な速度で動かすようにすること。wide char ベース
で Perl と同等の正規表現が使えるライブラリだったら、
自分も欲しいぞ。
0016名無しさん@#+*/%NGNG
15<<
全然流れを読んでいない。
なんでワイドなlexが出回ってないのか
理由を考えたことないだろ?
0017名無しさん@お腹いっぱい。NGNG
>>15
君の作ったものを公開してください。
0018名無しさん@#+*/%NGNG
<<17
あ、あれは恒例です。2ちゃん名物の煽りです。
001913NGNG
まあ、正直おれも、でっちあげでいいなら
1日で作れると思ったけどね。
002013NGNG
ブレイクスルーに関しては、
1はあそこにあるものをブレイクスルーと言ったんじゃ
ないんじゃないか? 文脈上。
0021デフォルトの名無しさんNGNG
http://www.sra.co.jp/people/katsu/grep/ohpcontents.html

どうせならegrep系の正規表現ライブラリキボーン
0022名無しさん@#+*/%NGNG
<<19
機能の不足といっても、主なものは
グループ化演算子の追加ぐらいだけど、
内部形式の調整と仮想マシンのipの操作、
あとnullableの判定の三箇所だけど、
でっち上げてみる?
逆方向サーチは多分10行以内で終わります。
002313NGNG
そいでさ、wcharだと表がでかくなるじゃん。
今のマシンならわざわざ表つくらんでNFAでstd::mapでも使えば
できんじゃないかと思って途中まで作った覚えがあるけど、仕事が忙しくなって
途中でほっぽってしまった。実際作ったらスピードはどうなるんだろう。
いまだとむしろメモリの方が安いかな?
002413NGNG
意味不明
結局、なにをでっちあげろっていってるの?
0025名無しさん@#+*/%NGNG
<<23
いや、格納方法の工夫じゃなくもっと美しいやりかた。
すでに公表してるんだけど、閾値を使ったアルゴリズム。
だからスピードでもサイズでも圧勝。
なんでかっていうとワイドだと重要状態数が半分。
002613NGNG
ふーん、その辺でなんか考えたんだ。
なんとなくわかった。

あと、誤解されてそうだけど、オレは君のソース読んでないよ。
さらに、基本的には「ちゃんとやったら1日じゃ無理だろ」派だよ。
「でっちあげる」ってのは、君のページに書いてあった仕様を
だいたい適当に満たして細かいこと考えないで作ったら、ってことだけど、
そんなんやる気ないし。
0027名無しさん@#+*/%NGNG
<<24
あれ一日で作れるんなら
21のキボンヌの解決は多分100行ぐらいで解決できるはずだヨ。
ただCで書くと物量的にでっかいし、ポインター地獄だと思う
から一日では無理。
002810NGNG
>>16
うん、考えたことないっす。
需要が少ないからかな?

wide char 対応で、DFA で素直に実現できる範囲の表現しか
使えないライブラリがあっても、それがどんなに速くても
あんまり需要がないと思うのですよ。lex 的な使い方が
そんなに重要だとは思えない。このへんが作者さんと私の
認識の違いなんだろうけど。

ともかく、現状で「ブレイクスルー」とか書いてるのは見てて
恥ずかしすぎるから、こうやってちょっかい出してるわけです。

>>22
アンカー系(^ $ \b \B \w \W など)もないね。これも、便利だけど
DFA だと実現が難しいものの1つです。

マルチバイトの正規表現マッチングは実現方法によっては特許に抵触
することもあるし、便利なものであれば wide char のライブラリの
需要はあると思いますよ。
0029名無しさん@#+*/%NGNG
lexだとライブラリにはなんない。
^$これは一番上の処理だけ。
\b\B\w\Wはパーサ作る上では必要ないと思う。
DFAによるパターンマッチング処理は
画像認識や音声認識など今後重要な分野だと思うよ。
もちろん、正規表現がどうのこうのでなく
アルゴリズムの部分でだけど。
0030名無しさん@お腹いっぱい。NGNG
ま、ネーミングは受けねらいが強いが、モノはなかなかいいんじゃ
ないの、コンパクトだし。いいと思いますよ、パチパチ
たまには他人をたたえましょうね>みなさん。
003112NGNG
いつのまにか話についていけないスレになっている…みんな勉強家だなあ。
003210NGNG
>>29
画像や音声の処理に DFA は使い物にならんすよ。
こういう分野は、DP マッチングを使うことが多いのかな。
0033デフォルトの名無しさんNGNG
興味はあってもライブラリの評価って難しいですよね。
有名でないものを自分でコンパイルして調べるのも面倒というか勇気がいります。
このライブラリを使った簡単なプログラムを公開しないと評価しづらいです。
このライブラリを使った簡易grepを作ってみてはどうでしょうか。
それとともlex系なので作れないんでしょうか。
0034デフォルトの名無しさんNGNG
昔,量子数つきのマッチングをDFAでうまく表現できなくて挫折したな。
0035デフォルトの名無しさんNGNG
> 2000/01/16 批判を受けて多機能化路線に変更。大幅な改修作業開始。

そこら辺りの正規表現ライブラリと大して変わらなくなるに一票。
0036名無しさん@#+*/% NGNG
35に一理あり。
かなり安定してから出すから良しとして。
マターリいきます。
■ このスレッドは過去ログ倉庫に格納されています