嗨,我有以下值

000001010016C02AB  111*
000001010016C02    111H
000001010016C      111

预期的输出是
00000101001,C02AB,*
00000101001,C02,H
00000101001,C,

值可能会有所不同。此字符串的长度将始终为23.如果不存在字符,则该位置将被空白填充。我现在使用的正则表达式是
(^.{11})[0-9](.{5})(?:.{5})(.*)

但是在第二组中使用此正则表达式时,会返回空白。我希望删除那些空白。

电流输出:
00000101001,C02AB,*
00000101001,C02  ,H
00000101001,C    ,

有人可以帮我从第二组中删除空白吗?

Demo

最佳答案

  • 查找:^(.{11})\d(\S+)\s*.{3}(.?)$
  • 替换:$1,$2,$3

  • 说明:
    ^           : beginning of string
      (.{11})   : 11 any character, stored in group 1
      \d        : 1 digit
      (\S+)     : 1 or more non spaces, stored in group 2
      \s*       : 0 or more spaces
      .{3}      : 3 any character
      (.?)      : 0 or 1 character, stored in group 3
    $
    

    结果:
    00000101001,C02AB,*
    00000101001,C02,H
    00000101001,C,
    

    关于java - 正则表达式从组中删除空格,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48043071/

    10-10 09:37