gpt4 book ai didi

java - 对于这种情况,Java String.split 需要什么正则表达式

转载 作者:太空宇宙 更新时间:2023-11-04 14:10:23 24 4
gpt4 key购买 nike

很抱歉,我真的不知道如何用语言表达我希望它如何工作。我想将数字字符与字母字符分开。如果数字前面有连字符,我想将其保留在那里。

翻阅之前的问题我发现"(?<=\\D)(?=\\d)|(?<=\\d)(?=\\D)"

我的实现是这样的:

String s = "dfgsgf-89ff--989";
String[] pieces = s.split("(?<=\\D)(?=\\d)|(?<=\\d)(?=\\D)");

它给了我这个:

peices[0] = "dfgsgf"-
peices[1] = "89"
peices[2] = "ff--"
peices[3] = "989"

我真正想要的是这个:

peices[0] = "dfgsgf"
peices[0] = "-89"
peices[0] = "ff"
peices[0] = "--989"

什么正则表达式会给我我想要的结果?

我已经查看了 Java 模式页面,但我仍然无法理解特殊构造的工作原理。

最佳答案

看起来你想要这样的东西,

String s = "dfgsgf-89ff--989";
String[] pieces = s.split("(?<=\\d)(?=\\D)|(?<=[A-Za-z])(?=[^A-Za-z])");
System.out.println(Arrays.toString(pieces));

或者

String[] pieces = s.split("(?<=\\d)(?=\\D)|(?<=[A-Za-z])(?=-*\\d)");

输出:

[dfgsgf, -89, ff, --989]
  • (?<=\\d)(?=\\D)匹配数字字符和非数字字符之间的边界。

  • (?<=[A-Za-z])(?=[^A-Za-z])匹配字母字符和非字母字符之间的边界。

关于java - 对于这种情况,Java String.split 需要什么正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28401271/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com