使用正则表达式拆分复杂字符串
本文关键字:复杂 字符串 拆分 正则表达式 | 更新日期: 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+):$
演示
第二组之后的?
将使该组成为可选组。