GJAX IS UNDER CONSTRUCTION! (※日本語ブログ)

Please wait a minute for GJAX/2008

ホーム 連絡をする 同期する ( RSS 2.0 ) Login
投稿数  171  : 記事  0  : コメント  763  : トラックバック  50

ニュース

今後のスケジュールについて

予定なし

インフォメーション

わんくま同盟メンバ ブログ トップ

ブログタイトル(July 2007~)
GSP.NET GJAX!
【読み方:じーえすぴーどっとねっと/じーじゃっくす】
【サブ:~ A C# programmer dives into ASP.NET! ~】

ASP.NET AJAXと違って、GSP.NET [ghost_shell's (web) pages & .NET]の部分が正式名称、GJAX!の部分が省略形・俗語となっています。

過去のブログタイトル
【表記:ウェブ100】
【読み方:うぇっぶいちまるまる】
【サブ:.Net & Webに てん ぜろ】

書庫

日記カテゴリ

カテゴリ:.Net Framework

for (int i = 0; i < regexes.Count; ++i)
{
    text = regexes[i].Replace(text, replaces[i]);
}

前エントリでは RichTextBox を使った検索箇所強調表示置換のアイデアを書きました。

このアイデアでは上記のような text 自身を更新する置換コードは使えません。タグ付き正規表現で置換する場合はRegex.Replaceメソッドも使っていくことになると思いますが、使用するメソッドは Regex.Replace からRegex.Match に代わります。

Regex.Match は Match クラス( System.Text.RegularExpressions 名前空間)のインスタンスを返します。 Match クラスを深く知るには、スーパークラスである Group や Capture についても知っておくと良いでしょう。

置換の方法を詳しく知りたかったので今まではあまり役に立ちませんでしたが、下記の記事ではMatchクラスをよく知ることが出来ます。

Title: スマートな文字列処理のための正規表現入門(後編)
URL : http://www.atmarkit.co.jp/fdotnet/basics/regex02/regex02_01.html

一通り上記の記事とMSDNライブラリのクラスライブラリを読み、やってみました。

Match match = new Regex("xml").Match(richTextBox_Preview.Text);
while (match.Success)
{
    richTextBox_Preview.Select(match.Index, match.Length);
    richTextBox_Preview.SelectionColor = Color.Red;
    match = match.NextMatch();
}

ASCIIの範囲内で(マルチバイト文字出現前で)したのに
「あれっ? 微妙にずれている??」

 

は解けた!

より多くヒットするように "xml" ではなく "t" 1文字にしてみました。(読み込んでいるのはXHTML 1.0 Transitional文書です。)
太字行について:Match オブジェクトの Index 、 Length は最初の Match メソッドで渡した被検索文字列に対しての値ではありますが、文字数が同じなのでこれでも問題はありません。

Match match = new Regex("t").Match(richTextBox_Preview.Text);
while (match.Success)
{
    richTextBox_Preview.Select(match.Index, match.Length);
    richTextBox_Preview.SelectionColor = Color.Red;
    richTextBox_Preview.SelectedText = match.Value;
    match = match.NextMatch();
}

1行目でヒットしたものは正しいです。真ん中にもなるとでたらめにしか見えませんが、それでも上の方は惜しかったりします。

そして気づきました。行数に応じて後ろに下がっているー!

RichTextBoxのSelectメソッドでは改行が無視されるのかな。 装飾の1つ?

 

投稿日時 : 2007年8月15日 18:22

コメント

# GetLineFrom「茶~。」Index 色付き置換3 2007/08/16 13:17 "ウェブ100" は "GSP.NET GJAX!"に変わり
GetLineFrom「茶~。」Index 色付き置換3

Post Feedback

タイトル
名前
Url:
コメント: