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

本文关键字:匹配 数字 不匹配 Regex 正则表达式 | 更新日期: 2023-09-27 18:21:14

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

'd*

不幸的是,它与中的"7"不匹配

*-7d

但是当我测试以下regex搜索模式时

xx

它匹配中的"xx"

asdxxasd

完全wierd!顺便说一句,我使用的是普通的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*"));

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

您的正则表达式匹配0个或多个数字。它开始查看您的模式,由于第一个字符是非数字,因此它匹配零位数。

如果你用+而不是*,你会强迫它从一个数字开始,然后(贪婪地)得到其余的数字。

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