簡體   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