非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

C#:正規表現を使ったサンプル

   

とあるプログラムで正規表現を駆使して処理しようと作ったものがボツになったのですが、勿体ないので書き留めておきます。ちょっとマニアックなサンプルですが。

[ad#top-1]

指定した文字と文字の間にある特定文字を消す

“と”の中にある//という文字を消す例です。

x//yz"abcde//fghijk"uv//w という文字列があったら、””内の//を消す方法です。””外の//は消しません。

string text = "x//yz\"abcde//fghijk\"uv//w";
text = Regex.Replace(text, "(\".+?)//(.+?\")", "$1$2");
 

 

指定した文字と文字の間にある特定文字列の中に文字を入れる

“と”の中にある//という文字の中にAという文字を入れる例です。

x//yz"abcde//fghijk"uv//w という文字列があったら、x//yz"abcde/A/fghijk"uv//wとなります。

string text = "x//yz\"abcde//fghijk\"uv//w";
text = Regex.Replace(text, "(\".+?/)(/.+?\")", "$1A$2");
 

 

指定した文字と文字の間にある特定文字を”複数”消す

上の例では、”と”の中にある//という文字は1つしか消せません。複数あってすべて消す場合はループを使います。

string text = "x//yz\"abcde//fghijk\"uv//w";
while(true){
  string work = Regex.Replace(text, "(\".+?)//(.+?\")", "$1$2");
  if(work == text) break;
  text = work;
}
 

 

自分で作ったものもありますが、ネットで質問して得たものもあり、ここまで行きつくまで結構苦労しました。(で、結局ボツになったのですが…)

 

[ad#ad-1]

スポンサーリンク

 - C#応用編