Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 括号之间的捕获和按字符分割_C#_Regex - Fatal编程技术网

C# 括号之间的捕获和按字符分割

C# 括号之间的捕获和按字符分割,c#,regex,C#,Regex,我有一个正则表达式:{([^}]+)} 它成功捕获括号内容,例如。 你好{foo}和{bar} 我还想捕获由角色分隔的匹配中的组,例如。 hello{foo:bar}和{hello:world} 前者将在{foo:bar}上与组{foo}和{bar}进行匹配,后者将与组{hello:world}和{world}进行匹配 我的正则表达式不太流利,我试过:{([^}]+)(:([^}])?}和{([^}]+)(\:([^}]))?},以防:是一个特殊字符 我需要进行哪些修改才能成功?要匹配这两种类型

我有一个正则表达式:
{([^}]+)}

它成功捕获括号内容,例如。
你好{foo}和{bar}

我还想捕获由角色分隔的匹配中的组,例如。
hello{foo:bar}和{hello:world}

前者将在
{foo:bar}
上与组
{foo}
{bar}
进行匹配,后者将与组
{hello:world}
{world}
进行匹配

我的正则表达式不太流利,我试过:
{([^}]+)(:([^}])?}
{([^}]+)(\:([^}]))?}
,以防:是一个特殊字符


我需要进行哪些修改才能成功?

要匹配这两种类型的字符串,可以使用

{([^{}:]+)(?::([^{}]+))?}

详细信息

  • {
    -a
    {
    字符
  • ([^{}:]+)
    -组1:除
    {
    }
    以外的一个或多个字符:
  • (?::([^{}]+)?
    -可选序列:
    • -冒号
    • ([^{}]+)
      -第2组:除
      {
      }
  • }
    -a
    }
    字符

好极了!谢谢你也添加了描述。@Vincent欢迎你。我通常省略对辅助事物的描述,但是如果您愿意,您可以阅读更多关于(
(?:…)
)和(
[^…]
)的内容。