gpt4 book ai didi

java - 如何使用正则表达式替换新行开头的制表符?

转载 作者:行者123 更新时间:2023-11-30 07:29:30 24 4
gpt4 key购买 nike

我正在使用 java 尝试将新行开头的四个空格替换为制表符。我想使用正则表达式来做到这一点。我的问题是正则表达式目前正在用一个选项卡替换所有四个空格序列。我希望它为每个四空格序列插入一个制表符。现在我有:

    public String translate(String text) {
text = text.replaceAll("(?m)^( )+", "\t");
return text;
}

最佳答案

你不想要 +因为你想要恰好 4 个空格,并且你需要一个回顾断言:

text = text.replaceAll("(?m)(?<=^ *)    ", "\t");

注意:由于向后看需要回溯,这应该只用于大约 10K 或更小的输入。对于更大的输入,使用模式和匹配器等

与其他答案不同,这个答案确实有效(见下面的测试),因为它使用正向后视 (?<=^ *)断言输入开始和目标替换之间只有空格,否则您将只匹配第一个 4 个空格:

String text = "        a\n        b    \n";
text = text.replaceAll("(?m)(?<=^ *) ", "\t");
System.out.println(text.replace("\t", "TAB"));

输出:

TABTABa
TABTABb

关于java - 如何使用正则表达式替换新行开头的制表符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8440916/

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