正規表現

- 作者: Jeffrey E.F. Friedl,株式会社ロングテール,長尾高弘
- 出版社/メーカー: オライリージャパン
- 発売日: 2008/04/26
- メディア: 大型本
- 購入: 24人 クリック: 754回
- この商品を含むブログ (84件) を見る
正規表現についていろいろ調べてみたかったので、ちゃんとした本を読んでみようかと思います。プログラムのコードの大部分を正規表現で書いたほうが、プログラムが短く書けるかもしれません。
青空文庫形式、でんでんマークダウン、かんたん電子書籍作成について相互に変換できるようになる担保として。
青空文庫形式
ルビの部分の選択をmeryで文字に強調表示させて見やすくする、構文ファイルのところの正規表現で。
|.+?》
《.+?》
にしたけれど、正確を期すならば、どういうのがいいのかという悩みの種。
|?(.+?)《(.+?)》これかな
一つ目の「|」があってもなくてもいい。ない場合は 「《.+?》」で「《」と「》」で囲まれた文字を選択することができる。
青空文庫形式
http://www.aozora.gr.jp/annotation/
青空文庫形式では、ひらがな漢字《るび》という形ならば、「|」が必要がないけれど、
漢字|漢字《るび》
という形ならば「|」を必要とする。ただし、ルビを付ける部分が漢字だけとは限らない。ひらがなにルビをつけたりアルファベットにルビを付ける場合もあるかもしれない。
ほかの形式に変換するには、
でんでんマークダウンのルビ
{電子出版|でんししゅっぱん}にするには、
置換は{$1|$2}でいいのかな。
かんたん電子書籍作成のルビ
漢字(るび)という形
置換は$1($2)
HTMLのルビ
html ⇒青空文庫ルビ
<ruby>(.+?)<rt>(.+?)</rt></ruby>
|$1《$2》
http://indesign-pdf.seesaa.net/article/380057204.html
|?([々?一-龠]+)《(.+?)》
でいいのかな?
と思ったがそれだけじゃ問題のような気がする。というのも外字があるし、ルビを付ける側の文字は漢字じゃなくてもいいのでそれもまた問題になるかな。
外字は、漢字としてあらわせてない文字を、漢字の作りで表している場合がある。
そうすると漢字のコードだけで表していると、間違う。ルビを付ける部分が漢字だけとは限らない。ひらがなにルビをつけたりアルファベットにルビを付ける場合もあるかもしれない。
http://www.aozora.gr.jp/cards/001091/files/42315_15931.html
ヘンデルとグレーテル
いったんA《アー》といってしまえば
という例がある。そうするには単語の境界について判断するしかない。
文字種での区切り
http://www.mlab.im.dendai.ac.jp/~yamada/ir/MorphologicalAnalyzer/CharactorType.html
|がない部分については、
([々?一-龠]+)《(.+?)》
でいいと思う。その他は
|(.+?)《(.+?)》
にしたほうがエラーが少なそうだ。
外字の問題は先に、漢字に変換するプロセスを挟むはずなのでいいのかもしれない。
正規表現を書いて、エディターに構文ファイルを作って色つけるするようにやっていたけれど自信がないので確認のために調べています。
メモ
\(([^()]*)\)
()に囲まれた文字の選択。ただし内側に()がないこと。
正規表現に使われている文字を正規表現で選択しようとするとなんというか苦労するので、そこを知りたいのである。