gpt4 book ai didi

用于有条件地删除空格的 Java 模式正则表达式

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:15:56 25 4
gpt4 key购买 nike

我已经搜索了几个小时的答案,但仍然无法解决特定的编程困境。这既不适合学校也不适合工作。我正在开发一个需要根据正则表达式执行预定义数据清理任务的应用程序。我遇到问题的一个特定表达式是删除单词和数字之间的空白字符。以下是示例要求:

word 123           ==> word123
123 word ==> 123word
world 123 wide ==> word123wide
world wide 123 ==> world wide123
world wide 123 456 ==> world wide123 456

RegEx lookaround 似乎是正确的方法,但仍然无法弄清楚如何将表达式应用于具有超过 2 个单词 block 的短语。

提前致谢。

最佳答案

在两个 Pattern 之间使用 lookarounds 和 alternance 的组合,如下所示:

//                | preceded by digit
// | | one whitespace
// | | | followed by non-digit
// | | | | OR
// | | | | | preceded by non-digit
// | | | | | | one whitespace
// | | | | | | | followed by digit
String pattern = "(?<=\\d)\\s(?=\\D)|(?<=\\D)\\s(?=\\d)";
// test Strings
String test0 = "word 123";
String test1 = "123 word";
String test2 = "world 123 wide";
String test3 = "world wide 123";
String test4 = "world wide 123 456";
// testing output: replace all found matches
// (e.g. one per String in this case)
// with empty
System.out.println(test0.replaceAll(pattern, ""));
System.out.println(test1.replaceAll(pattern, ""));
System.out.println(test2.replaceAll(pattern, ""));
System.out.println(test3.replaceAll(pattern, ""));
System.out.println(test4.replaceAll(pattern, ""));

输出:

word123
123word
world123wide
world wide123
world wide123 456

关于用于有条件地删除空格的 Java 模式正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20479809/

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