在字符串C#中查找模式

时间:2012-11-28 10:49:46

标签: c# regex string

您好我有以下字符串模式:

*A

*BA*

AB

*GN*BN

我需要在输入字符串中找到这样的模式。 如果匹配,我需要相应地替换值。

我怎样才能使用正则表达式? 我在上面显示的模式来自XML文件。所以它是动态的。 *这里的意思是外卡字符。所以,

*A表示以A结尾的字符串。

*BA*表示字符串包含BA

AB表示确切的AB字符串。

3 个答案:

答案 0 :(得分:3)

看起来你所获得的模式已经非常接近正则表达式,只是错过了.前面的*,表明可以重复的是“任何事情”({{ 3}})。

static bool PerformMatch(string rawPattern, string value)
{
    var adjustedPattern = rawPattern.Replace("*", ".*");
    var regex = new Regex(adjustedPattern);
    var match = regex.Match(value);
    return match.Success && match.Length == value.Length;
}

static void Main()
{
    Console.WriteLine(PerformMatch("*BA*", "Oh?"));  //false
    Console.WriteLine(PerformMatch("*BA*", "BAH!")); //true
    Console.ReadLine();
}

答案 1 :(得分:2)

以下功能应符合您的标准。

public bool CustomMatch(string input, string pattern)
{
    pattern = "^" + Regex.Escape(pattern).Replace(@"\*", ".*") + "$";
    return Regex.IsMatch(input, pattern);
}

答案 2 :(得分:0)

您的*通配符是表示单个字符还是多个字符?假设单个字符。还假设'通配符'仅为[A-Z]

^(AB|^[A-Z]A|^[A-Z]BA[A-Z]|^[A-Z]GN[A-Z]BN)