簡體   English   中英

正則表達式匹配並返回組名

[英]Regex to match and return group names

我需要匹配以下字符串,並將值作為組返回:

abctic
abctac
xyztic
xyztac
ghhtic
ghhtac

用分組寫模式如下:

(?<arch>[abc,xyz,ghh])(?<flavor>[tic,tac]$)

以上僅返回組名的一部分。 (表示匹配不正確)。

如果我在每個子模式中使用*而不是在最后使用$ ,則組是正確的,但這將意味着abcticff也將匹配。

請讓我知道我正確的正則表達式應該是什么。

您的模式不正確,因為管道符號| 用於指定替代匹配,而不是您所使用的括號,即[x,y]

您的模式應為: ^(?<arch>abc|xyz|ghh)(?<flavor>tic|tac)$ ^$元字符可確保字符串^(?<arch>abc|xyz|ghh)(?<flavor>tic|tac)$匹配。 如果需要匹配較大字符串中的文本,則可以用\\b替換它們以在單詞邊界上進行匹配。

試試這個方法:

string[] inputs = { "abctic", "abctac", "xyztic", "xyztac", "ghhtic", "ghhtac" };
string pattern = @"^(?<arch>abc|xyz|ghh)(?<flavor>tic|tac)$";

foreach (var input in inputs)
{
    var match = Regex.Match(input, pattern);
    if (match.Success)
    {
        Console.WriteLine("Arch: {0} - Flavor: {1}",
                            match.Groups["arch"].Value,
                            match.Groups["flavor"].Value);
    }
    else
        Console.WriteLine("No match for: " + input);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM