2012-01-22 10 views
1

これは本当に変です。私は、次のような単純な正規表現の検索パターンに奇妙な正規表現(正規表現)マッチ​​ング!数字と一致しません

\d* 

を持っ残念ながらそれは

*-7d 

に「7」が一致していません。しかし、私は、次の正規表現検索パターン

xx 

をテストしたとき、それはマッチャー"xx" in

asdxxasd 

完全に素晴らしい! 私は通常のC#正規表現オブジェクトを使用しています。 ご協力いただきありがとうございます!

次のように申し訳ありませんが、私のコードは次のとおりです。

public static string FindFirstRegex(string input,string pattern) 
{ 
    try 
    { 
     Regex _regex = new Regex(@pattern); 
     Match match = _regex.Match(input.ToLower()); 
     if (match.Success) 
     { 
      return match.Groups[0].Value; 
     } 
     else 
     { 
      return null; 
     } 
    } 
    catch 
    { 
     return ""; 
    } 
} 

次のように私は関数を呼び出す:

MessageBox.Show(utilities.FindFirstRegex("asdxxasd", "xx")); 
MessageBox.Show(utilities.FindFirstRegex("ss327d", "\\d*")); 
+4

問題を示すコードを投稿してください。 –

+0

Oli CharlesworthをSecondingしていますが、C#regex文字列でバックスラッシュをエスケープするのを忘れているかもしれません。 –

答えて

5

あなたの正規表現は0桁以上一致しています。あなたのパターンを見始めると、最初の文字は非数字なので、ゼロ桁に一致します。

*を使用するのではなく、+を使用すると、強制的に数字で始まり、残りの数字が(貪欲に)得られます。

3

あなたが*数量詞を使用しているためであるので、\d*が数字を意味し、繰り返しの任意の数。 .NET実装では、この正規表現の入力*-7dは、empty string,empty string,7,empty stringおよびempty stringの5つの一致を返します。 *の代わりに+の量指定子を使用します。つまり、\d+です。

+0

THanks。なぜそれがnullを返すのですか? – user1034912

+0

@ user1034912、空の文字列でも '\ d *' –

+0

と一致するので、これは正規表現になると.NETの制限ですか? – user1034912

関連する問題