JavaScriptにおける正規表現入門
正規表現は、複雑な検索と置換(または単なる検索)のための命令です。これらは非常に興味深いことを可能にしますが、残念ながら習得はかなり難しいものです。
JavaScriptには正規表現を扱うためのいくつかのメソッドがあります。私たちは、例としてreplaceメソッドからそれらに親しみ始めます - あなたは既にこのメソッドを知っています:最初のパラメータは何を変更するかを、2番目のパラメータは何に変更するかを取ります。そして、このメソッド自体は、置換が行われる文字列に適用されます:
'bab'.replace('a', '!'); // 'b!b' を返します
このメソッドの最初のパラメータとして、単なる文字列だけでなく、正規表現を渡すことができます。正規表現は、スラッシュ/の内側に配置された一連のコマンドです。これらのスラッシュは、正規表現のデリミタと呼ばれます。
正規表現自体は、2種類の文字で構成されています:それ自体を表す文字と、特殊文字と呼ばれるコマンド文字です。
文字と数字はそれ自体を表します。次の例では、正規表現を使用して文字'a'を!に置き換えます:
'bab'.replace(/a/, '!'); // 'b!b' を返します
一方、ドットは特殊文字であり、任意の1文字を表します。次の例では、このパターンに一致する文字列を見つけます:文字'x'、次に任意の文字、そして再び文字'x':
'xax eee'.replace(/x.x/, '!'); // '! eee' を返します
デリミタの後に、修飾子(フラグ)を書くことができます - これらは正規表現の全体的なプロパティを変更するコマンドです。例えば、g修飾子はグローバルな検索と置換モードを有効にします - これがないと正規表現は最初の一致のみを検索し、これがあるとすべての一致を検索します。
次の例ではg修飾子が指定されておらず、正規表現は最初の一致のみを見つけます:
'aab'.replace(/a/, '!'); // '!ab' を返します
そして今、正規表現はすべての一致を見つけます:
'aab'.replace(/a/g, '!'); // '!!b' を返します
次の文字列が与えられます:
let str = 'ahb acb aeb aeeb adcb axeb';
パターン:文字'a'、任意の1文字、文字'b'に従って、文字列'ahb'、'acb'、'aeb'を見つける正規表現を書いてください。
次の文字列が与えられます:
let str = 'aba aca aea abba adca abea';
パターン:文字'a'、任意の2文字、文字'a'に従って、文字列'abba'、'adca'、'abea'を見つける正規表現を書いてください。
次の文字列が与えられます:
let str = 'aba aca aea abba adca abea';
'adca'をキャプチャせずに、'abba'と'abea'の文字列を見つける正規表現を書いてください。