22

文字列が数字で始まることを確認する方法を見つけるために、私はしばらく探し回っていました。数字で始まるかどうかを確認できる正規表現ステートメント'/^ \d/'に出くわしました。しかし、私はそれを以下のコードで動作させることができないようです。私は声明のどこで間違っていましたif(Regex.Match(info,"/^\d/"))か?

//String attachbody is the attachment body from an email C read into a string
string[] data = Regex.Split(attachbody, "\n");

foreach (String info in data)
{
    if (Regex.Match(info,"/^\d/"))
    {
        string[] tabbedHeaderData = Regex.Split(info, "\t");
        TicketID = tabbedHeaderData[0].ToString();
        Status = tabbedHeaderData[1].ToString();
        URL = tabbedHeaderData[2].ToString();
        InitCats = tabbedHeaderData[3].ToString();
        PostRevCats = tabbedHeaderData[4].ToString();
        ListNumClosed = tabbedHeaderData[5].ToString();

        Console.WriteLine(TicketID);
        Console.WriteLine(Status);
        Console.WriteLine(URL);
        Console.WriteLine(InitCats);
        Console.WriteLine(PostRevCats);
        Console.WriteLine(ListNumClosed);
        Console.ReadLine();
    }
}

データの例(タブ区切り):
TicketIDステータスURL InitCats PostRevCatsListNumClosed555555クローズ http://5555555.com/searcho 悪意のあるサイト55555

4

6 に答える 6

66

あなたの正規表現は間違っています。/.../正規表現を定義するためのJavaScriptの規則です。C#で次のように試してください:

if (Regex.IsMatch(info, @"^\d"))

また、ブール値を返すIsMatchメソッドを使用する必要があることに注意してください。そうしないと、コードはコンパイルされません。

また、文字列が1桁以上で始まることと一致させたい場合は、次のようにします。

if (Regex.IsMatch(info, @"^\d+"))
于 2011-06-16T13:04:19.763 に答える
39

これには正規表現は必要ありません。試す

if (info.Length > 0 && char.IsDigit(info[0]))
{
   ...
}

正規表現を使用する場合は、 を削除し//Regex.IsMatch(info,@"^\d").

于 2011-06-16T13:07:06.137 に答える
4

Regex.Match に指定した文字列の形式です。

正しい形式は次のとおりです。

Regex.Match(info,@"^\d")

@ は、エスケープ文字 (円記号など) が通常の文字として扱われることを意味します。それがなければ、正規表現は"^\\d".

于 2011-06-16T13:05:42.390 に答える
1

あなたの正規表現は間違っています。.Net は perl スタイルの正規表現を使用しません。正しい表現は @"^\d" です。

.Match の MatchCollection を何にも使用しない場合は、Regex.IsMatch(...) を使用する必要があります。

RegEx.IsMatch(info, @"^\d")
于 2011-06-16T13:12:06.570 に答える
0

文字列が数字で始まるかどうかだけを調べようとしている場合。上記のように、正規表現を使用してスキップできます。Substring を使用し、最初の文字を削除して、それが数字かどうかをテストします。

数値全体を削除しようとしている場合は、文字列を文字配列に変換して、文字をテストします。

疑似文字列 s = "" for each c in chars{ if c is number then s += c else exit for } s を整数に変換すると、文字列の先頭に数字が表示されます。

于 2011-06-16T13:16:13.807 に答える