flutter 如何在逗号后面没有空格时排除正则表达式匹配

6qfn3psc  于 2022-11-17  发布在  Flutter
关注(0)|答案(1)|浏览(140)

我有一个正则表达式可以处理99%的情况。但是有一个不起作用
我的输入是这样的

MyString=[XXXXXX:XX   XX   XX   XX, XXXXX:332.83, XXXXX:XXX-XX-XX XX:XX:XX, XXXX:0.0, XXXX:2, XXXX:0, XXXX:-256, XXXXX:5, XXXX:136935, XXXX:0, XXXX:XX XXX XXX, XXXX:0.5, XXXXX:true, XXXX:0.509375, XXX:0.0, [XXXX:2022-06-14 06:45:00], 2022-09-17,XXXXX:1]

此正则表达式允许匹配第一个[和最后一个]之间的所有key:value

(?<=(?<!: *)\[).*?(?=,)|(?<=, *(?=[^ \r\n]))(?:.*?(?=,)|[^,\r\n\[\]]+?(?=\])|[^,\r\n]+\](?= *\]))

当检测到逗号时,它会拆分所有key:value,但我有特定的数据,其中逗号后面没有空格。例如,我的示例的最后一个日期被拆分,因为,。我搜索以排除此拆分匹配,以匹配所有2022-09-17,XXXXX:1
我搜索一个正则表达式,它只匹配由,分隔而不是由,分隔数据
下面是一个示例,其中拆分了我搜索的最后一个数据以防止https://regex101.com/r/8fd7Xv/1

vh0rcniy

vh0rcniy1#

您可以在要使用逗号的位置加入一个空格,或一个或多个空格。

(?<=(?<!: *)\[).*?(?=, )|(?<=, +(?=[^ \r\n]))(?:.*?(?=, )|[^,\r\n\[\]]+?(?=\])|[^,\r\n]+\](?= *\]))

请参阅更新的病毒码https://regex101.com/r/Dlx8Xi/1

相关问题