解説
正規表現は文字列のパターンを表現する方法です。検索や置換で用いられて、複雑な条件で文字列に一致させることが可能です。正規表現では、メタ文字、メタキャラクターと呼ばれる記号を使い、文字を抽象化して出現パターンを記します。
この正規表現は、多くのプログラミング言語や、テキストエディタで利用できます。使用するプログラミング言語などの環境によって、微妙に仕様が違うので、使用前に確認が必要です。本記事では、JavaScriptの正規表現を中心に扱います(他のプログラミング言語の正規表現も、大きな差はありません)。
今回は、その正規表現の中から、「文字セットの否定」を紹介します。文字セットは、角カッコで複数の文字を囲い、その中のいずれかの一文字を指定する、正規表現の記法です。
| 記述 | 意味 |
|---|---|
| [abc] | 「a」か「b」か「c」 |
文字セットの否定は、角カッコと「^」で複数の文字を囲い、その中のいずれでもない一文字を指定する、正規表現の記法です。
| 記述 | 意味 |
|---|---|
| [^abc] | 「a」か「b」か「c」ではない |
句読点や記号以外といった、「何か以外」の文字を指定する際に便利な方法です。
サンプル
正規表現で「文字セットの否定」を利用したコードを、JavaScriptで簡単に書いてみます。
<html>
<head>
<title>「文字セットの否定」のサンプル</title>
</head>
<body>
<pre><script type="text/javascript">
// 文章の「てにをは」と句読点、改行以外を「○」に置換
var str = "吾輩は猫である。\n"
+ "名前はまだない。\n"
+ "どこで生れたか、とんと見当けんとうがつかぬ。\n"
+ "何でも薄暗いじめじめした所でニャーニャー"
+ "泣いていた事だけは記憶している。\n"
+ "吾輩はここで始めて人間というものを見た。\n"
+ "しかもあとで聞くとそれは書生という"
+ "人間中で一番獰悪な種族であったそうだ。\n"
+ "この書生というのは時々我々を捕えて"
+ "煮て食うという話である。\n";
str = str.replace(/[^てにをは、。\n]+/g, "○");
// 「/[^てにをは、。\n]+/g」で、
// 「^てにをは、。\n]+」で、
// 「てにをは」句読点、改行以外の1文字の繰り返し
// 「g」すべて
// という意味
document.writeln(str);
</script></pre>
</body>
</html>
○は○。 ○は○。 ○、○。 ○て○は○て○。 ○は○て○を○。 ○は○。 ○は○を○て○て○。
