.NETで正規表現ライブラリを使う

前回のboostの正規表現ライブラリのサンプルに引き続き、C#とC++/CLI、VB.NETでも同じサンプルを書いてみました。全て.NET FrameworkのSystem.Text.RegularExpressions.Regexを用いています。

なんてことはありませんね。

C#版

こちらはMono 2.6.7環境のmcs/gmcsでビルドしてチェックしました。

using System;
using System.Text.RegularExpressions;</p>

<p>// usage: a.exe pattern replace-to</p>

<p>public class Program
{
  static int Main(string[] v)
  {
    if (v.Length != 2) return 1;</p>

<pre><code>Regex r = new Regex(v[0]); // 正規表現オブジェクト
string buf;                // 読み取り用のバッファ

while ((buf = Console.ReadLine()) != null)
  Console.WriteLine(r.Replace(buf, v[1]));

return 0;
</code></pre>

<p>}
}

C++/CLI版

C++/CLIはオープンソースなコンパイラが存在しないため、Microsoft Visual Studio 2008 SP1を用いてビルド、チェックしました。

using namespace System;
using namespace System::Text::RegularExpressions;</p>

<p>// usage: a.exe pattern replace-to</p>

<p>int main(array&lt;System::String ^&gt; ^v)
{
    if (v-&gt;Length != 2) return 1;</p>

<pre><code>Regex^ r = gcnew Regex(v[0]); // 正規表現オブジェクト
String^ buf;                  // 読み取り用のバッファ

while ((buf = Console::ReadLine()) != nullptr)
    Console::WriteLine(r-&amp;gt;Replace(buf, v[1]));

return 0;
</code></pre>

<p>}

VB.NET版

ついでにVB.NET版も。これもMonoのvbncでテストしました。

Imports System
Imports System.Text.RegularExpressions</p>

<p>Module Program</p>

<p>Public Sub Main(ByVal v() As String)</p>

<pre><code>If v.Length &amp;lt;&amp;gt; 2 Then Exit Sub

Dim r As New Regex(v(0)) ' 正規表現オブジェクト
Dim buf As String        ' 読み取り用のバッファ
buf = Console.ReadLine() ' 代入結合判定できないので
                         ' 予め内容を詰めておく。

While buf &amp;lt;&amp;gt; Nothing
  Console.WriteLine(r.Replace(buf, v(1)))
  buf = Console.ReadLine()
End While
</code></pre>

<p>End Sub</p>

<p>End Module

投稿者:

dyama

佐世保のシステムエンジニアです。詳しいプロフィールやこのブログについてはこちらをご覧ください。

「.NETで正規表現ライブラリを使う」への1件のフィードバック

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください