C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#の正規表現における数量詞(Quantifier)の使い方を徹底解説

数量詞とは

数量詞(Quantifier)とは、正規表現において、直前の要素(1文字、グループ、または文字クラス)が入力文字列の中に何回出現すれば一致とみなされるかを指定するための記号です。繰り返しを扱うパターンを作成する際に欠かせない存在です。

たとえば、パターン \d*\.\d に含まれる * は「直前の要素が0回以上繰り返される」ことを意味します。このパターンは「.0」「19.9」「219.9」のような文字列に一致します。

C#で使える主な数量詞の一覧

以下の表に、C#の正規表現で利用できる主な数量詞とその動作、パターン例、一致例をまとめました。

数量詞説明パターン一致例
*直前の要素と0回以上一致します。\d*\.\d".0"、"19.9"、"219.9"
+直前の要素と1回以上一致します。"be+""been" 内の "bee"、"bent" 内の "be"
?直前の要素と0回または1回一致します。"rai?n""ran"、"rain"
{ n }直前の要素とちょうどn回一致します。",\d{3}""1,043.6" 内の ",043"、"9,876,543,210" 内の ",876"、",543"、",210"
{ n }直前の要素とn回以上一致します。"\d{2}""166"、"29"、"1930"
{ n , m }直前の要素とn回以上、m回以下で一致します。"\d{3,5}""166"、"17668"、"193024" 内の "19302"
*?直前の要素と0回以上一致します(可能な限り少ない回数で)。\d*?\.\d".0"、"19.9"、"219.9"
+?直前の要素と1回以上一致します(可能な限り少ない回数で)。"be+?""been" 内の "be"、"bent" 内の "be"
??直前の要素と0回または1回一致します(可能な限り少ない回数で)。"rai??n""ran"、"rain"
{ n }?直前の要素とちょうどn回一致します。",\d{3}?""1,043.6" 内の ",043"、"9,876,543,210" 内の ",876"、",543"、",210"
{ n }?直前の要素とn回以上一致します(可能な限り少ない回数で)。"\d{2}?""166"、"29"、"1930"
{ n , m }?直前の要素とn回以上、m回以下で一致します(可能な限り少ない回数で)。"\d{3,5}?""166"、"17668"、"193024" 内の "193"、"024"

貪欲マッチと最短マッチの違い

数量詞には大きく分けて2種類の動作があります。
通常の数量詞(*+ など)は「貪欲(Greedy)」と呼ばれ、できるだけ多くの文字に一致しようとします。一方、数量詞の末尾に ? を付けた形(*?+? など)は「最短一致(Lazy)」と呼ばれ、できるだけ少ない文字で一致させようとします。

たとえば \d{3,5} は "193024" に対して最大5桁の "19302" に一致しますが、\d{3,5}? では最小の3桁ずつに分割され、"193" と "024" に一致します。目的に応じて使い分けることが重要です。

コード例

実際にC#で数量詞を使った正規表現を実行してみましょう。

using System;
using System.Text.RegularExpressions;

class Program
{
static void Main()
{
string input = "19.9 219.9 .0";
MatchCollection matches = Regex.Matches(input, @"\d*\.\d");

foreach (Match match in matches)
{
Console.WriteLine(match.Value);
}
}
}

実行結果:

19.9
219.9
.0

このように、数量詞を活用することで、小数点を含む数値など繰り返し要素を持つパターンを柔軟に抽出できます。

  1. CSSのoutlineプロパティとは?要素の外側に線を引く方法を実例付きで解説

    Webデザインをしていると、ページ上の要素の周りにアウトライン(輪郭線)を表示したい場面があります。例えば、目立たせたいボックスをデザインする場合、色付きのアウトラインを追加することで、ユーザーの注意をその要素へ引きつけることができます。 そこで役立つのが、CSSのoutlineプロパティです。outlineプロパティを使えば、要素の境界線(border)の外側に線を追加し、Webページ上で要素を目立たせられます。 この記事では、具体的なコード例を交えながら、アウトラインの基本と、outlineプロパティを使ってWeb要素の外側に線を描く方法を解説します。読み終える頃には、outlineプロパ

  2. HTMLの引用タグの使い方を解説!q要素とblockquote要素の違いとは

    HTMLには、他の情報源から引用した文章を適切に表現するための専用タグが用意されています。代表的なものが、短い引用を定義する<q>タグと、別ソースから引用したセクション全体を定義する<blockquote>タグです。両者の大きな違いは要素の種類にあります。<q>タグはインライン要素として機能し、文章中に自然な形で引用文を埋め込めます。一方、<blockquote>タグはブロックレベル要素で、独立した引用ブロックとして表示されます。多くのブラウザでは、<q>タグで囲んだテキストには二重引用符( )が自動的に付与され、<blockq