2017年06月 / 05月≪ 123456789101112131415161718192021222324252627282930≫07月

インフォメーション

FC2ブログで画像等を一括アップロードするソフトを地味に配布してます。
FC2ブログ用ファイルアップロードの最新版はこちら
(ベクター)FC2ブログ用ファイルアップロード

--.--.-- (--)

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


 |  --:--  |  スポンサー広告  |  Top↑

2008.06.09 (Mon)

""内に2バイト文字が含まれている文字列の検索

正規表現で「""で囲まれた文字列で、2バイト文字(全角)が含まれている文字列」を探す。
秀丸の検索でとりあえず確認


"[^"]*[^0-9a-zA-Z\[\]\(\) '":\+\-\*\/=<>,\.\\\!#\$%&'\|_\?\{\}\^]+[^"]*"


正規表現で「2バイト文字」を表す方法がわからなかったので、
とにかく0-9,a-z,[]()+-*/=...と出てきそうな1バイト文字をはずしていく方法で。
半角カナとかそんなんが出てこないようなソースなら見つけやすいと思います。
もっといい方法がありそうだけど・・・・見つかったら良いな。
スポンサーサイト


 |  16:16  |  プログラム全般  |  トラックバック(0)  |  コメント(0)  |  Top↑

2008.05.16 (Fri)

C#.NETでワイルドカードを使用して文字列検索したい

C#.NETでワイルドカードを使いたいけど、ファイルの取得時くらいにしか対応してない。
文字列の検索でワイルドカードを使用したいので、Regex(正規表現)クラスを利用して検索することに。

まずワイルドカードを正規表現に変換する。
Regex.Replaceで"?"と"*"だけ変換するのにつかうデリゲートメソッドを宣言。
デリゲートとかよくわからない

/// <summary>
/// ワイルドカードの検索文字列を正規表現に変換する
/// </summary>
/// <param name="m"></param>
/// <returns></returns>
private static string WildCardMatchEvaluator(System.Text.RegularExpressions.Match m)
{
    string s = m.Value;
    // ?は任意の1文字
    if (s.Equals("?")) return ".";
    // *は任意の文字列
    else if (s.Equals("*")) return ".*";
    // それ以外はエスケープ
    else return System.Text.RegularExpressions.Regex.Escape(s);
}


Match.Replaceと上記のメソッドを使ってwcPattern(ワイルドカード)->rPattern(正規表現)に変換。
MatchEvaluator型をnewして使う。

string rPattern = System.Text.RegularExpressions.Regex.Replace(wcPattern, ".", 
    new System.Text.RegularExpressions.MatchEvaluator(WildCardMatchEvaluator)); 


rPatternにはwcPatternの「?」が「.」に、「*」が「.*」に変換された文字が入ります。
「+」とか「(」とかが入っていた場合はエスケープされます。「\+」とか「\(」

あとはrPatternを使って正規表現で検索するなり好きに

if (System.Text.RegularExpressions.Regex.IsMatch(str, rPattern))
{
    MessageBox.Show("まっちした");
}




 |  13:27  |  C#.NET  |  トラックバック(0)  |  コメント(0)  |  Top↑
 | BLOGTOP | 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。