開発ブログ

WWWクリエイターズが送る、Git、CSS、HTML、コマンドライン、Macの便利機能など、開発に関する役立ち情報発信します。気まぐれに更新。

正規表現:半角スペース、全角スペースの表現方法。

最終更新:2017-11-13 by Joe

正規表現での、全角、半角のスペースの表現方法についてです。

正規表現におけるスペースの表現方法

正規表現で、半角スペースと全角スペースは、エスケープが不要な文字のひとつです。ですので、通常通り普通の文字として記述すればOKです。

半角スペース

通常通り半角スペースを打ち込みます。量指定子の「{n,m}」を利用して繰り返しを検出します。PHPの例です。

<?php

// 2つ以上の半角スペースの連続をマッチ
$pattern = '/ {2, }/'; //半角スペースをそのまま
$subject = 'I need to  get better in the regular expressions.';

if ( preg_match( $pattern, $subject ) ) {
  echo '半角スペースの連続がありました。';
}  

全角スペース

全角スペースも同様です。量指定子「+」で1つ以上の連続をマッチします。同じくPHPの例です。

<?php

// 全角スペースの連続をマッチ
$pattern = '/ +/'; //全角スペースをそのまま
$subject = 'ソースコード内の全角スペースあったら怖い。 ';

if ( preg_match( $pattern, $subject ) ) {
  echo '全角スペースがありました。';
}

半角スペースか全角スペースをいずれか

文字クラスとは、「[]」のカッコで囲んだ文字列で、カッコの中のいずれかに該当する文字を表すことができます。

// 半角・全角スペースを文字クラスで表現。
[ | ]+

上記は空白なのででみえませんが、2種類のスペースがパイプ(|)で区切られています。(パイプは書かなくても同じ意味になりますが、ここではわかり易さのために付けています)これにより半角、もしくは、全角のスペースのいずれであってもマッチさせることができます。

文字クラスに続く、「+」は量指定子で、直前のパターンが1つ以上連続する場合はすべてマッチします。

量指定子についてはこちら、

また、こちらに特殊文字の一覧をまとめています。

複数の種類の「空白文字」をまとめて表現

日本語でスペースというと、半角・全角スペースの事を指しますが、文字をデータとして取り扱うとき「空白文字(ホワイトスペース)」とよばれる文字にはいくつかの種類があります。

  • 半角スペース(全角スペースを除く)
  • タブ
  • 改行
  • 改ページ

正規表現では、エスケープシーケンス「\s」を使って、これらの空白文字をまとめて1つの文字で表すこともできます。

例)空白文字の表現

// あらゆる空白文字の1文字以上の連続
\s+

例)空白を含むあらゆる文字の表現

「\s」とは対象に、大文字のSを利用したエスケープシーケンス「\S」は、「空白文字以外の文字列」を表現します。これを利用して「空白を含むすべての文字」を表現することができます。

// 空白、改行、タブなどすべての文字の1文字以上の連続
[\s\S]+

通常の正規表現(マルチラインモード)では、特殊文字「.(ドット)」は空白文字以外の文字を表します。量指定子*を組み合わせた表現「.*」は、改行があると、処理がストップしてしまいますが、上記は改行を越えて(改行があっても行が途切れることなく)処理を行うことができます。

参考

閉じる