我有这个正则表达式:{([^}]+)}
它成功捕获括号内容,例如
hello {foo} and {bar}
。
我还想捕获由字符分隔的匹配组,例如
hello {foo:bar} and {hello:world}
。
前者将在{foo:bar}
上与组{foo}
和{bar}
进行匹配,而后者{hello:world}
将与组{hello}
和{world}
进行匹配。
我不太会使用正则表达式,因此我尝试过使用:{([^}]+)(:([^}]))?}
和{([^}]+)(\:([^}]))?}
,以防:是特殊字符。
我需要进行哪些修改才能成功?
答案 0 :(得分:5)
要匹配两种类型的字符串,可以使用
{([^{}:]+)(?::([^{}]+))?}
请参见regex demo
详细信息
{
-一个{
字符([^{}:]+)
-第1组:除{
,}
和:
以外的一个或多个字符(?::([^{}]+))?
-可选序列:
:
-冒号([^{}]+)
-第2组:除了{
和}
之外的1个以上的字符}
-一个}
字符。