我有这个正则表达式:{([^}]+)}
它成功捕获括号内容,例如
你好,{foo} 和 {bar}
。
我还想捕获由字符分隔的匹配项中的组,例如
你好 {foo:bar} 和 {hello:world}
。
前者会在 {foo:bar}
上与组 {foo}
和 {bar}
产生匹配,而后者 {hello:world}
与组 {hello}
和 {world}
。
我不精通正则表达式,我试过这个:{([^}]+)(:([^}]))?}
和 {( [^}]+)(\:([^}]))?}
如果 : 是特殊字符。
我需要进行哪些修改才能成功?
最佳答案
要匹配两种类型的字符串,您可以使用
{([^{}:]+)(?::([^{}]+))?}
参见 regex demo
详情
{
-{
字符([^{}:]+)
- 第 1 组:{
、}
和以外的一个或多个字符:
(?::([^{}]+))?
- 一个可选序列::
- 冒号([^{}]+)
- 第 2 组:除{
和}
之外的 1+ 个字符
}
-}
字符。
关于c# - 在括号之间捕获并按字符拆分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52516343/