正規表現を使う

青空文庫のルビを削除する

エディタの文字列の正規表現による検索・置き換え機能を使う。 特に、WindowsもMacOSでも正規表現自体には大きな違いはないが、プログラミング言語や利用するエディタによって多少の差異がある。

Windowのエディタ サクラエディタ の場合について、 利用可能な正規表現 をあげてこう。 MacOSのエディタ mi でも大抵は利用可能だ。

ルビの例

次のようなルビ「《しわが》」を削除して、文字列を次のように変換させたい:

"嗄《しわが》"---> "嗄"

つまり、

"《しわが》"_--> ""(空文字列)で置換する(つまり削除)

としればよい。

このためには、エディタの検索・置換において、『正規表現』にチェックを入れたうえで、次のように文字列を検索して、置き換える。

検索文字列:《[^》]+》

置換文字列:空文字(何も指定しない)

考え方

文字列においては正規表現を使うと次のようなパターンにマッチさせることができる。

  1. 文字列集合[...](たとえば、[ABC]はAかBかCのどれかにマッチ)
  2. 「+」は直前のパターンの1回以上の繰り返しを表す

この事実を応用すると、文字列において

  1. ルビを表すの最後の文字「》」では「ない」任意の1文字を 否定 「^ 」をつかって「^》」と表すことができる。
  2. 「[^》]」は「》」ではない任意の文字列集合である。
  3. 文字「》」では「ない」1個以上の任意の文字列パタンは 「[^》]+」で表される。
  4. 文字「《」で始まり、文字文字「》」を含まない文字列パタン「[^》]+」,最後に文字文字「》」で終わる文字列パタンは、結局 《[^》]+》 で表される。
  5. 以上の文字列パタンを検索文字列とする。
  6. 置換される文字列を空白文字とする(結果として、検索文字列が削除)。
search_regexp

右図は、サクラエディタの場合の例である。 サクラエディタで検索置換するには、[検索]メニューから[置換]を選ぶ。

正規表現にチェックが入っていることに注意されたい。 青空文庫のルビ付き「走れメロス」テキストの場合、[すべてて置換]ボタンを押すと、90箇所のルビが削除されたことが分かる。

replace_result

演習

青空文庫で、適当な作品をダウンロードして、ルビを削除してみなさい。