gpt4 book ai didi

java - 使用 Java 正则表达式分隔字符串中的连续字符

转载 作者:行者123 更新时间:2023-12-02 05:40:02 24 4
gpt4 key购买 nike

我正在尝试翻译一个字符串并在任何大写字符前加一个下划线。我得到的最接近的是:

out=in.replaceAll("([^_])([A-Z])","$1_$2");

但对于 "ABCDEF",它返回 "A_BC_DE_F",我猜是因为在考虑了“AB”之后,它没有查看“BC”,因为“B”已经在上一场比赛中了。当然我可以应用它两次,但是有没有更优雅的解决方案?

还有:

out=in.replaceAll("([A-Z])","_$1");

但它添加了一个前导“_”

Java 1.8,如果重要的话

最佳答案

您可以将[^_] 否定的字符类放入非消耗正向回顾

s = s.replaceAll("(?<=[^_])[A-Z]","_$0");

请注意,无需使用捕获括号将整个消费模式括起来,$0 反向引用代表整个匹配值。

参见 this Java demo :

System.out.println(
"ABCDEF".replaceAll("(?<=[^_])[A-Z]","_$0")
); // => A_B_C_D_E_F

关于java - 使用 Java 正则表达式分隔字符串中的连续字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55492320/

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