Java 用于从字符串中删除不需要的字符的正则表达式

Java 用于从字符串中删除不需要的字符的正则表达式,java,regex,string,string-utils,Java,Regex,String,String Utils,我需要删除java中字符串中不需要的字符。 例如 输入字符串为 Income ......................4,456 liability........................56,445.99 我希望输出为 Income 4,456 liability 56,445.99 用java编写这篇文章的最佳方法是什么。我正在解析大型文档 为此,应优化性能。最好的方法是: String result = yourString.replaceAll("[-+.^:,]",""

我需要删除java中字符串中不需要的字符。 例如 输入字符串为

Income ......................4,456
liability........................56,445.99
我希望输出为

Income 4,456
liability 56,445.99
用java编写这篇文章的最佳方法是什么。我正在解析大型文档
为此,应优化性能。

最好的方法是:

String result = yourString.replaceAll("[-+.^:,]","");

将不使用任何内容替换此特殊字符。

对于此特定示例,我可以使用以下替换:

String input = "Income ......................4,456";
input = input.replaceAll("(\\w+)\\s*\\.+(.*)", "$1 $2");
System.out.println(input);
以下是所使用模式的说明:

(\\w+)   match AND capture one or more word characters
\\s*     match zero or more whitespace characters
\\.+     match one or more literal dots
(.*)     match AND capture the rest of the line
括号中的两个量称为捕获组。正则表达式引擎在匹配时会记住它们是什么,并按顺序将它们作为替换字符串中使用的
$1
$2
提供

输出:

Income 4,456

您可以使用以下代码行进行替换:

System.out.println("asdfadf ..........34,4234.34".replaceAll("[ ]*\\.{2,}"," "));

你试过什么?另外,它们总是一个单词,然后是空格,然后是数字吗?你在第二行添加一个字符。正如我提到的,我正在尝试阅读文档。所以Order可能是随机的。我基本上是在清理额外的特殊字符,如“.”,并只保留有意义的信息。您的解决方案存在一个问题,即它还会从每行右侧的数字中删除标点符号。它还会替换第二个值(就在
99
之前的值)中的小数点,我同意,这不是正确的解决方案。我也是这么想的。让我试试上面提到的其他解决方案。感谢您的及时回复。这个正则表达式到底在做什么?我的意思是我需要了解它到底是如何工作的。这个表达式适用于我所演示的示例。然而,我遇到了另一个字符串,如下图所示。。。。。。。。。。。598368…………598368……更新您的问题,并向我们展示涵盖每个边缘案例的数据。像这样在每个人身上来回移动不会有任何效果。这个正则表达式到底在做什么?我的意思是我需要了解它到底是如何工作的。[]*搜索0到*带空格--\\.{2,}搜索2到*点。