2010年9月16日木曜日

翻訳者と校正者のための正規表現 (2) - 基本


このシリーズ、前回は正規表現の基礎の一部を紹介しました。今回も基本を続けます。

なぜかときどき見かけるのが、文頭のスペース。自動で字下げできる時代に、文頭スペースは正直邪魔になります。文書をスペースで整えるのはお勧めしません。たとえば、将来 HTML 化に取り組んだときに、スペースの不統一で余計な手間がかかります。で、文頭のスペースを検出するには、次を使用します。

^\s

「^」は文頭を表しています。その直後にスペース (空白文字) に一致する「\s」があるので、文頭のスペースに一致するわけです。ここで円 (バックスラッシュ) 文字は逆エスケープになっています。こういった記述法を略記法ともいいます。「s」は普通の文字で、これに逆エスケープを付けるとスペースを示します。全角スペースも検出する場合は、次のようになります。

^[\s ]

ちょっとわかりにくいですが「s」の後に全角スペースを入力しています。また、角かっこに注目してください。[ ] かっこはクラスを示し、これで囲まれている文字のどれでもヒットするということです。ですから、文頭にある空白文字と全角スペースにヒットします。

「^」は、左端に記述したときに文頭を示しますが、別の場所で使用すると「否定」の意味になります。たとえば、数値と単位の間を 1 スペース指定しているクライアントさんがいるとします (50 MB など)。スペースが存在しないとエラーですが、これはどうやって確かめることができるでしょうか?

[^\s]MB
または
\SMB

最初の記述は否定形になります。正規表現の先頭に「^」があると、文字列の先頭に一致する意味になってしまいましたね。そこで、クラスを示す [ ] で囲んで防いでいます。「^\sMB」とだけ記述すると文字列の先頭がスペースで、その後に「MB」が続くという意味になってしまいます。

2 つ目の [ ] かっこがないほうは、大文字の S になっていますね。そう、ややこしいですが、大文字の \S はスペース (空白文字) 以外を意味しますので最初から否定形になっています。正規表現では、同じエラーを検出するにしても、さまざまな表現ができてしまいます。ではさっそく「\SMB」で検索してみましょう。


このように、正しい記述以外すべてヒットしました。スペースのある/なしのスタイル違反は、この方法の応用で検出できます。本当は各種の空白文字を個別に指定した方が正確なのですが、ここでは省略しました。このあたりは、また後程・・・。

こんな感じで、気負わず今後も書いていきたいと思いまスルメ。

0 件のコメント: