Help us understand the problem. What is going on with this article?

HTMLで<ruby><rt>タグを打つのが面倒なので正規表現でラクをした

More than 3 years have passed since last update.

<ruby><rt>タグって面倒くさいよね

仕事の案件で必要に迫られた「HTMLで表示されるすべての漢字にルビを振る」という作業が地味にしんどい。そこで、正規表現を使った置換でラクをしたのでまとめ。

下準備

置換前
青(あお) 噛(か)んで熟(い)って頂戴(ちょうだい)<br>
終電(しゅうでん)で帰(かえ)るってば 池袋(いけぶくろ)

まずはテキストを 漢字(かんじ) の形式で成形。パターンは( )でも[ ]でも何でもいいのですが、ルビが振ってあるWord文書をコピー&ペーストするとこの形式になるので、これをそのまま採用。

でもって、下記の置換を実行。

検索文字列
([一-龠]+)\(([あ-ん]+)\)
置換文字列
<ruby>$1<rt>$2</rt></ruby>

[一-龠]の範囲指定については下記を拝借。

phpで漢字の正規表現を調べる(utf-8) - Qiita
http://qiita.com/awm-kaeruko/items/45f7074ba26424c4fce5

厳密には「[々]が入っていない」など細々あるようですが、例外は目検でチェックすりゃええやん…というざっくりポリシーで。

実行結果

置換後
<ruby><rt>あお</rt></ruby> <ruby><rt></rt></ruby>んで<ruby><rt></rt></ruby>って<ruby>頂戴<rt>ちょうだい</rt></ruby><br>
<ruby>終電<rt>しゅうでん</rt></ruby><ruby><rt>かえ</rt></ruby>るってば <ruby>池袋<rt>いけぶくろ</rt></ruby>

あお んでって頂戴ちょうだい

終電しゅうでんかえるってば 池袋いけぶくろ

やったぜ。

あとがき

初 Qiita投稿。

ここ1~2年、技術系の調べものをしていると Qiitaにヒットすることが多くなってきたので、イケてるえんぢにあのすなる Qiitaといふものをヌルヌルえんぢにあもしてみむとてするなり。よろしくお願いします。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした