[英]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.