繁体   English   中英

在字符串 C# 中查找模式

[英]Find pattern in String C#

嗨,我有以下字符串模式:

*A

*BA*

AB

*GN*BN

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

我怎样才能用正则表达式做到这一点? 我上面显示的模式来自 XML 文件。 所以它是动态的。 *这里表示通配符。 所以,

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

*BA*表示中间包含BA字符串。

AB表示精确的AB字符串。

看起来您获得的模式已经非常接近正则表达式,只是缺少一个. *前面表示可以重复的是“任何东西”(正则表达式中的重复)。

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();
}

以下函数应该符合您的标准。

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

您的*通配符是表示单个字符还是可以是多个字符? 假设单个字符。 还假设“通配符”仅为[AZ]

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM