求一个正则表达式实现这个匹配
字符串格式:"[name]张三丰:[uuid]...;[name]金毛狮王:[uuid]....;[name]赵四:[uuid]...;[name]..."
这个字符串由M段数据组成,每段数据以;(冒号)隔开,我需要匹配每段数据内的[name]到:[uuid]之间的内容,如果第一段数据匹配成功则完成,否则匹配所有数据。
我尝试过这样写\[name\].*匹配的字符串.*\:\[uuid\]
例如:\[name\].*三.*\:\[uuid\]
-> 匹配张三丰
我写的这段正则表达式是错的,因为:
如果数据是这样的"[name]哈士奇:[uuid]...;[name]金毛:[uuid]张三丰....
那么就会匹配到[uuid]
后面的数值,这不是我想要的,我只想匹配每个[name]到之后遇到的第一个:[uuid]之间的内容;。
因为一些原因不能切字符串,只能用正则完成,以上,求助!!!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
参考上面的回答,用了两个零宽断言,中间是贪婪匹配。(上面那个会匹配...)
突然发现代码和图片不匹配。中间不是贪婪匹配,应该是懒惰匹配。
\[name\](.*?)\[uuid\]
用非贪婪匹配