TextToWavの正規表現について
  1. Y.N - 2016/08/20 (Sat) 10:29:37
    はじめまして
    すばらしいソフトを作ってもらって感謝しています。

    今回青空文庫のテキストを読ませようとして、"漢字列《ルビ》"でルビだけ読ませたかったので正規表件で試しましたがうまく動作しません。

    ルビだけ読ませようと以下のように設定しました。
    (^|[^\p{Han}])\p{Han}+《([^\p{Han}|《》]+)》

    $1$2
    に置換しようとしましたが出来ませんでした。

    行頭か漢字でない文字に続いて漢字列があって《ルビ》があるものを、漢字でない文字とルビを抜き出そうとしています。

    同様な以下の物は動作しています
    "|文字列《ルビ》"をルビのみ抜きだす
    |[^|《》]+《([^\p{Han}|《》]+)》

    $1
    に置換


    正しく動作させるにはどう記述すればよいのでしょうか?
  2. Noah - 2016/08/20 (Sat) 22:21:06
    Text To Wav で使用している正規表現ライブラリでは \p{Han} に対応していないようです。
    以下のように \p{Han} を [一-龠] などにすると正しく動作するかもしれません。
    (^|[^一-龠])[一-龠]+《([^一-龠|《》]+)》
  3. Y.N - 2016/08/26 (Fri) 21:14:55
    "|[^|《》]+《([^\p{Han}|《》]+)》""$1"は動いているように見ます。複数だとだめなのでしょうか?
  4. Noah - 2016/08/27 (Sat) 07:35:21
    一見動作しているように見えますが、以下のように《》で囲まれた文字列に漢字や英数字などを入力してみると ^\p{Han} が分割されて解釈されているのがわかります。
    ---
    |漢字《p》
    |漢字《{》
    |漢字《a》
    |漢字《n》
    |漢字《}》
    ---
    |漢字《ひらがな》
    |漢字《漢字》
    |漢字《b》
    |漢字《c》
    |漢字《d》