開発ブログ
Git、CSS、HTML、正規表現など、入門者がつまづきそうなポイントを中心に、役立ち情報発信します。。

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

最終更新:2018-04-17 by Joe

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

正規表現における半角・全角スペースの表現方法

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

半角スペース

通常通り、半角スペースを文字として記述します。

下記は、量指定子の「{n, m}」を利用して繰り返し回数の範囲を表現した例です。

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

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

全角スペース

全角スペースも同様に文字として記述します。

下記は、量指定子「+」で「1つ以上の連続」をマッチした例です。

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

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

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

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

// 半角・全角スペースのいずれか
( | )+

上記は2種類のスペースがパイプ(|)で区切られています。これにより半角、もしくは、全角のスペースのいずれであってもマッチさせることができます。直後に続く「+」で、スペースが1つか2つ以上連続する場合はすべてマッチしています。

また、文字クラスを使って同様の表現が可能です。

// 半角・全角スペースを含む文字クラス
[  ]+

量指定子についてはこちらもご一読下さい。

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

空白文字(ホワイトスペース)の表現方法

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

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

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

例)空白文字

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

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

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

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

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

このような記述は、改行を越えた、ドキュメント全体でマッチングを行うときにしばしば必要になります。

参考情報

正規表現は利用している環境によって微妙に仕様が異なりますので、お使いの環境にご注意下さい。PHPはこちらによくまとまっています。

基本的な正規表現に関する情報は、こちら記事にまとめています。

 

閉じる