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

C#の正規表現を使って文字列内の各単語の最初の文字を抽出・表示する方法

C#では、正規表現(Regex)を活用することで、文字列から特定のパターンに一致する部分を簡単に抽出できます。この記事では、文字列内の各単語の最初の文字を取り出して表示する方法を解説します。

対象となる文字列

例として、次のような文字列を扱います。

string str = "The Shape of Water got an Oscar Award!";

使用する正規表現パターン

各単語の最初の文字を表示するには、次の正規表現を使用します。

@"\b[a-zA-Z]"

このパターンの構成要素は以下の通りです。

  • \b:単語の境界(ワードバウンダリ)を表します。単語の先頭位置にマッチします。
  • [a-zA-Z]:英字1文字にマッチします。

つまり、このパターンは「各単語の先頭にある英字1文字」に一致するため、結果として各単語の最初の文字だけを取得できます。文字列リテラルの前に付けている @ は逐語的文字列リテラルを意味し、エスケープシーケンスの処理を無効にして正規表現を読みやすくしています。

サンプルコード

完全なコードは以下の通りです。

using System;
using System.Text.RegularExpressions;
namespace RegExApplication {
    public class Program {
        private static void showMatch(string text, string expr) {
            Console.WriteLine("The Expression: " + expr);
            MatchCollection mc = Regex.Matches(text, expr);
            foreach (Match m in mc) {
                Console.WriteLine(m);
            }
        }
        public static void Main(string[] args) {
            string str = "The Shape of Water got an Oscar Award!";
            Console.WriteLine("Display first letter of each word!");
            showMatch(str, @"\b[a-zA-Z]");
        }
    }
}

コードのポイント

  • Regex.Matchesメソッド:入力文字列から正規表現に一致するすべての箇所を MatchCollection として返します。
  • foreachループ:取得した各マッチを順番にコンソールへ出力します。

実行結果

Display first letter of each word!
The Expression: \b[a-zA-Z]
T
S
o
W
g
a
O
A

出力を見ると、「The」「Shape」「of」「Water」「got」「an」「Oscar」「Award」の各単語の頭文字である T、S、o、W、g、a、O、A が正しく抽出されていることがわかります。

  1. Pythonのitertoolsを使って文字列の重複しない順列を先頭からn個出力する方法

    順列(パーミュテーション)とは、複数のオブジェクトを異なる並び順で表現したものです。しかし、与えられたオブジェクトの中に同じ要素が含まれている場合、生成される順列の中にまったく同じ並びが現れることがあります。この記事では、Pythonの標準ライブラリitertoolsを使って、重複を除いた一意な順列だけを効率よく取り出す方法を解説します。基本の考え方itertoolsモジュールには、順列を生成するためのpermutations()メソッドが用意されています。ただし、元の文字列に重複した文字が含まれていると、このメソッドは同一の並びを何度も返してしまいます。そこで、以下の手順で一意な順列のみを取

  2. Pythonで辞書(Counter)を使って文字列内の最初に繰り返される単語を検索する方法

    与えられた文の中には、文が終わる前に同じ単語が繰り返して登場することがあります。この記事では、Pythonを使って文中で最初に繰り返された単語を検出するプログラムを紹介します。 処理の流れ このプログラムでは、以下の手順で目的の単語を特定します。 与えられた文字列をスペース区切りで単語に分割する collectionsモジュールを使って、分割した単語を辞書形式(カウンタ)に変換する 単語のリストを先頭から順に走査し、出現頻度が1より大きい最初の単語を見つける プログラム:繰り返される単語を検索する 以下のプログラムでは、collectionsパッケージに含まれるCounterクラスを使用し