正規表現で括弧の中身だけを抽出する

はじめに

文字列の中からカッコを検索して、カッコを取り除いた状態で抽出する正規表現です。

事前準備(正規表現シミュレータ)

テキストエディタで正規表現のシミュレーションをします。今回はサクラエディタを使います。[Ctrl] + [F] で検索ボックスを出し、[正規表現]のチェックボックスにチェックを入れると、正規表現が使えるようになります。

括弧の中身だけを抽出する正規表現

以下の正規表現でカッコの中身だけ抽出できます。

(?<=\().*(?=\))

一つずつ解説していきます。カッコが多くてわかりにくいので、検索したいカッコをわかりやすく表現してみました。

(?<=左のカッコ).*(?=右のカッコ)

以下の部分は正規表現の「肯定後読み」という技法です。

(?<=左のカッコ)

肯定後読み

「肯定後読み」という名前を見るとすごく難しそうですが、それほど難しい話ではありません。肯定後読みとは、文頭から右に検索を開始して、検索対象がヒットした場所から処理を開始することです。

(?<=\().*

「(」を検索して「(」がヒットしたら、「(」の後から処理を開始して、「(」のあとの文字列を抽出しています。「(」は正規表現の予約済み文字なので、\でエスケープしています。

.*

「.(ドット)」:任意の一文字
「*(アスタリスク)」:直前の文字の0回以上の繰り返し
なので、「.*」は「任意の一文字以上の文字列」を表しています。

肯定先読み

以下は「肯定後読み」という技法です。

(?=右のカッコ)

肯定後読みとは、文頭から右に検索を開始して、検索対象がヒットしたら文頭に戻って処理を開始することです。

まとめ

肯定後読みで「(」がヒットしたところから処理を開始し、肯定先読みで「)」がヒットしたら「(」まで戻って検索するという処理です。

(?<=\().*(?=\))

コメント

タイトルとURLをコピーしました