我有以下字符串: @name {名称:名称} @
我正在寻找一个匹配该字符串的正则表达式模式(当然名称可以是任何东西) 正则表达式还应该匹配name:name可以是name:name,name:name多次的情况。
提前感谢。
答案 0 :(得分:0)
答案 1 :(得分:0)
@[^{]+\{[^:]+:[^},]+(,[^:]+:[^},]+)*\}@
这个正则表达式的含义很简单:总是避免匹配即将出现的分隔符。
让我们说,在开始时,[^{]+
将匹配所有内容,直到第一个{
,以便抓住其中的所有字符。
[^:]+:[^},]+
匹配{}
中的第一个匹配项,
和(,[^:]+:[^},]+)*
是尝试匹配可选逗号分隔部分的部分。
这是python中的测试用例:
>>> re.match(r'@[^{]+\{[^:]+:[^},]+(,[^:]+:[^},]+)*\}@', r'@table{name:tablea,partiton:id}@') is not None
True