使用正则表达式拆分复杂字符串

本文关键字:复杂 字符串 拆分 正则表达式 | 更新日期: 2023-09-27 18:21:45

我对正则表达式有非常基本的知识,这对我来说太难了。我需要把字符串分成三部分。

我的输入看起来像这个XXX YYY:ZZZ:(总是以:ZZZ:结束)

  • XXX可以是任何东西,包括$&+,:;=?@#|'<>.-^*()%!和空格
  • YYY是按字母顺序排列的字符,可以以.结尾,也可以根本不存在
  • ZZZ是可以有前导零的数字,并且在字符串末尾的两个:之间

我能想出的最巧妙的字符串是Lo-rem ip sum.,::0001678154:ZZZ将是0001678154,我们可以去掉:ZZZ:,所以剩下的部分是Lo-rem ip sum.,:,但最后一个字符不是字母数字或.,这意味着YYY不包括在这个字符串中XXX是剩下的(Lo-rem ip sum.,:

现在我有了一些糟糕的半功能代码,包括硬编码的长度、if、子字符串和拆分,我相信你可以想出更好的解决方案。感谢

使用正则表达式拆分复杂字符串

下面的正则表达式将捕获这三组字符并将其存储到三个独立的组中,

^(?<xxx>.*?)(?<yyy>(?:[A-Za-z0-9])+'.?)?:(?<zzz>'d+):$

演示

第二组之后的?将使该组成为可选组。