奇怪的正则表达式(正则表达式)匹配!不匹配的数字

时间:2012-01-22 04:40:57

标签: c# .net regex

好的,这真的很奇怪。我有以下简单的正则表达式搜索模式

\d*

不幸的是它与

中的“7”不匹配
*-7d

但是当我测试以下正则表达式搜索模式时

xx

中匹配“xx”
asdxxasd

完全奇怪! 顺便说一下,我正在使用普通的c#regex对象。 提前感谢您的任何帮助!

抱歉,我的代码如下:

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*"));

2 个答案:

答案 0 :(得分:5)

您的正则表达式匹配0位或更多位数。它开始查看你的模式,因为第一个字符是非数字,所以它匹配零位数。

如果您使用+而不是*,则会强制它以数字开头,然后(贪婪地)获取剩余的数字。

答案 1 :(得分:3)

这是因为你使用*量词,所以\d*表示数字,任意数量的重复。在.NET实现中,输入*-7d的此正则表达式将返回5个匹配项:empty stringempty string7empty stringempty string。使用+量词代替*,即:\d+