正規表現

正規表現で「+(プラス)」は直前の文字を1回以上 | エスケープ

正規表現でプラスは1回以上繰り返し
記事の要約
  • 「+」は直前の文字を1回以上繰り返し
  • 「\+」で単純に文字としてのプラスを表現
  • 「+?」で最短一致

「+」は直前の文字を1回以上繰り返し

正規表現における「+(プラス)」は直前の文字を1回以上繰り返しという意味を持ちます。「あ+」と書いてあれば「あ」「ああああ」のいずれにもあてはまります。また、特殊な文字や省略記法に対しても「+」は有効です。

// 1を1回以上繰り返す表現
1+

// ヒットする文字列
1
111
111111111111111

// 数字を1回以上繰り返す表現
\d+

// ヒットする文字列
2
345
0987654321

(参考)「*」「?」「{}」も繰り返しの記号

「+」と同様に「*」「?」「{}」も繰り返しとしての意味を持ちます。

「\+」でエスケープ

「+」は正規表現内では特殊な意味をもってしまうため、たんに文字として「+」を表現したい場合にはエスケープという処理が必要です。正規表現ではエスケープするには「\(バックスラッシュ)」をつけて「\+」としましょう。

「+」は最長一致

「+」は直前の文字を1回以上繰り返しですが、厳密には「直前の文字を1回以上繰り返した結果一番長いパターンにヒットする」という処理をします。

// 対象
ピカチュウライチュウ

// 正規表現
(.+チュウ)  // 最長一致なので「ピカチュウライチュウ」
(.+?チュウ) // 最短一致(後述)なので「ピカチュウ」「ライチュウ」

「+?」にすれば最短一致

もし対象のなかでもっとも短い場合にヒットさせたい場合には「+」を「+?」として、最短一致に変更する必要があります。なお「*」や「?」の場合も「*?」「??」とすることで同様に最短一致へと変更できます。

詳しくは次の記事で解説しています。