正则表达式删除捕获组的最后一个字符

时间:2017-08-28 14:13:25

标签: regex

我有以下文字:

2017-08-28 08:44:12,2017-08-28 08:45:57,105.524,any,80,6415,13.2,458434,20.1,439004310,30.3,4344,33281855,957

以及后续正则表达式:

^(?:[^\,]*\,){4}([^,]*)(80){1,5}([^\,]*\,){9}.*

我正在捕捉单词33281855,作为第3组匹配。但我需要这个单词而不用逗号,就像33281855一样 如何删除逗号?

1 个答案:

答案 0 :(得分:0)

解决此问题的最简单方法是将(a,){9}展开到a(?:,(a)){8}

^(?:[^,]*,){4}([^,]*)(80){1,5}[^,]*(?:,([^,]*)){8}.*
                              ^^^^^^^^^^^^^^^^^^^^

请参阅regex demo

现在,[^,]*(?:,([^,]*)){8}将匹配除,以外的0 +字符(带有[^,]*),然后恰好8次出现,,然后出现除{{{0}以外的0 +字符在将非,块捕获到第2组时将匹配1}}(最后一个将与匹配一起返回)。

请注意,逗号不是特殊的正则表达式字符,并且不需要转义它。