こんにちは!エンジニアの中沢です。
C#には正規表現で文字列のパターンを指定して置換するための「Replaceメソッド」あります。
正規表現でパターンを指定すれば任意の文字列を書き換えることができるので、上手く活用してください。
この記事では、
・正規表現とは
・Replaceメソッドで置換する方法
という基本的な内容から、
・Replaceメソッドで削除する方法
などの応用的な使い方に関しても解説していきます。
正規表現とは
正規表現とはいくつかの文字列のパターンを一つの形式でまとめて表現するための表現方法のことです。
主な正規表現については次の表のとおりになります。
記号 | 記号の説明 | 例 | 例の説明 |
---|---|---|---|
. | 任意の1文字。改行文字は除く。 | .+ | 任意の文字列 |
* | 直前の1文字の0回以上の繰り返しと一致 | hoge* | hogeもしくはhogee...と一致 |
^ | 行の先頭 | ^[0-9] | 行頭が数字 |
$ | 行の末尾 | ^.{10}$ | 10文字の行 |
[ ] | カッコ内の任意の1文字と一致。「-」で範囲指定可。 | [a-z] | 小文字のアルファベット1文字と一致 |
[^ ] | カッコ内の任意の1文字と不一致。「-」で範囲指定可。 | [^A-Z] | 大文字のアルファベット以外 |
+ | 直前の文字の1個以上の繰り返しと一致 | hoge+ | hogee...と一致 |
? | 直前の文字の0または1文字と一致 | hoge? | eと一致 |
{ } | カッコ内の数値の繰り返しと一致 | {n} | 直前の文字のn個の繰り返しと一致 |
{,n} | 直前の文字のn個以下の繰り返しと一致 | ||
{m,} | 直前の文字のm個以上の繰り返しと一致 | ||
{m,n} | 直前の文字のm個以上、n個以下の繰り返しと一致 | ||
| | 直前、直後どちらかのパターンに一致 | hoge|piyo | hogeまたはpiyo |
( ) | カッコ内をグループ化。マッチした内容は参照可。 | ー | ー |
Replaceメソッドで置換する方法
ここでは、Replaceメソッドで置換する方法を解説します。
Replaceメソッドは第1引数に検索対象の文字列を指定し、第2引数に置換後の文字列を指定します。
次のプログラムで確認してみましょう。
using System; using System.Text.RegularExpressions; namespace Sample { class Sample { static void Main() { string str = "SamuraiEngineer"; Regex reg = new Regex("Samurai"); string result = reg.Replace(str, "サムライ"); Console.WriteLine(result); Console.ReadKey(); } } }
実行結果:
サムライEngineer
このようにして指定した文字列を置換することができました。
Replaceメソッドで削除する方法
ここでは、Replaceメソッドで削除する方法を解説します。
Replaceメソッドで削除するには、置換後の文字列に空文字(””)を指定します。
次のプログラムで確認してみましょう。
using System; using System.Text.RegularExpressions; namespace Sample { class Sample { static void Main() { string str = "Samurai123Engineer"; Regex reg = new Regex("[0-9]"); string result = reg.Replace(str, ""); Console.WriteLine(result); Console.ReadKey(); } } }
実行結果:
SamuraiEngineer
このようにして指定した文字列を削除することができました。
まとめ
いかがでしたか?
今回は正規表現でパターンを指定して置換する方法を解説しました。
Replaceメソッドで置換後の文字列に空文字(””)を指定すれば削除できるので、ぜひ活用してくださいね。
もし、正規表現で置換する方法を忘れてしまったらこの記事を確認してください!