我在给出给定形式的字符串的正则表达式时遇到了麻烦:
123123<key:value><key:value>,21313<key:value><key:value>
其中键:值对是可选的,但我们不能在同一个键中有两个冒号:值对。
我已经走到这一步了:
^((\d+)(<(.+?):(.+?)>)*)(,\d+)(<(.+?):(.+?)>)*$
一些有效的文本:
123131
123131, 123131, 1213313
12313<key:value>
232133<key:value><key:value>,232133<key:value><key:value>
答案 0 :(得分:2)
试试这个:
^((\d+)(<(.+?):(.+?)>){0,2})(,\s*((\d+)(<(.+?):(.+?)>){0,2}))*$
根据您不想捕获的群组,您可以将( )
更改为(?: )
。
答案 1 :(得分:1)
尝试使用此^(\d+(<.+:.+>){1,2})(,\d+(<.+:.+>){1,2})*$
希望它有所帮助
答案 2 :(得分:0)
非常感谢您的回复,但他们似乎都没有完全按照我的意愿行事。我想也许简单的事情就是遵循OrangeDogs的建议考虑可维护性......