在括号内捕获并按字符分割

Vin*_*ent 4 c# regex

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

它成功捕获了括号内容,例如 hello {foo} and {bar}.

我还希望捕获由一个字符分隔的匹配内的组,例如 hello {foo:bar} and {hello:world}.

前者会{foo:bar}与群体产生匹配{foo},{bar}而后者则{hello:world}与群体{hello}和群体匹配{world}.

我不精通正则表达式,我已经试过这样:{([^}]+)(:([^}]))?}{([^}]+)(\:([^}]))?}万一:是一个特殊字符.

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

Wik*_*żew 5

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

{([^{}:]+)(?::([^{}]+))?}
Run Code Online (Sandbox Code Playgroud)

请参阅正则表达式演示

细节

  • {- 一个{
  • ([^{}:]+)-第1组:一个或多于其它更多字符{,}:
  • (?::([^{}]+))? - 可选序列:
    • : - 冒号
    • ([^{}]+)- 第2组:除{和之外的1+个字符}
  • }- 一个}炭.