我有这个正则表达式: {([^}]+)}
它成功捕获了括号内容,例如
hello {foo} and {bar}.
我还希望捕获由一个字符分隔的匹配内的组,例如
hello {foo:bar} and {hello:world}.
前者会{foo:bar}与群体产生匹配{foo},{bar}而后者则{hello:world}与群体{hello}和群体匹配{world}.
我不精通正则表达式,我已经试过这样:{([^}]+)(:([^}]))?}和{([^}]+)(\:([^}]))?}万一:是一个特殊字符.
我需要做哪些修改才能成功?
要匹配两种类型的字符串,您可以使用
{([^{}:]+)(?::([^{}]+))?}
Run Code Online (Sandbox Code Playgroud)
请参阅正则表达式演示
细节
{- 一个{炭([^{}:]+)-第1组:一个或多于其它更多字符{,}和:(?::([^{}]+))? - 可选序列:
: - 冒号([^{}]+)- 第2组:除{和之外的1+个字符}}- 一个}炭.