代码之家  ›  专栏  ›  技术社区  ›  Dotnet_Developer10

如何在两个括号之间匹配此模式(字符a-z,数字)?

  •  0
  • Dotnet_Developer10  · 技术社区  · 4 年前

    我有这个代码,我想匹配这个模式:

    • 所有字符a-z,a-z在两个“”之间。
    • 变量应位于方括号之间。

    我怎样才能做到这一点?

    应接受此输入:

    ["a1","a2"]
    

    这是我的代码和我尝试过的内容:

     string text = "["a1","a2"]";
     Regex rg2 = new Regex(@"[^\""a-z|A-Z|0-9\""$]+(, [^\""a-z |A-Z |0-9\""$]+)+");
     if (rg2.IsMatch(text)
          Console.WriteLine("True");
    
    1 回复  |  直到 4 年前
        1
  •  0
  •   Wiktor Stribiżew    4 年前

    您可以使用

    Regex rg2 = new Regex(@"^\[""[a-zA-Z0-9]+""(?:,\s*""[a-zA-Z0-9]+"")*]$");
    Regex rg2 = new Regex(@"\A\[""[a-zA-Z0-9]+""(?:,\s*""[a-zA-Z0-9]+"")*]\z");
    

    请参阅 C# demo :

    string text = "[\"a1\",\"a2\"]";
    Regex rg2 = new Regex(@"\A\[""[a-zA-Z0-9]+""(?:,\s*""[a-zA-Z0-9]+"")*]\z");
    Console.WriteLine(rg2.IsMatch(text)); // => True
    

    详细信息 :

    • \A -字符串的开头
    • \[" -a [" 固定字符串
    • [a-zA-Z0-9]+ -一个或多个ASCII字母/数字
    • " -双引号
    • (?:,\s*"[a-zA-Z0-9]+")* -零次或多次重复
      • , -逗号
      • \s* -零个或多个空白
      • "[a-zA-Z0-9]+" - “ ,一个或多个ASCII字母数字字符, “
    • ] -a ] 烧焦
    • \z -绳子的末端。