在括号之间捕捉并按字符划分

时间:2018-09-26 11:09:13

标签: c# regex

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

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

我还想捕获由字符分隔的匹配组,例如 hello {foo:bar} and {hello:world}

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

我不太会使用正则表达式,因此我尝试过使用:{([^}]+)(:([^}]))?}{([^}]+)(\:([^}]))?},以防:是特殊字符。

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

1 个答案:

答案 0 :(得分:5)

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

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

请参见regex demo

详细信息

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