java - 如何从java中的String中删除特定的String

标签 java regex file parsing

我正在从字符串中删除特定的字符串。首先我通过文件阅读器读取文本文件,然后我将文件的内容存储到字符串数组中并从字符串数组中删除一些特定的字符串

我的输入文本是:

    :VL
15
n
3 c

09:0.023
 15th:0.023
 1987:0.025
 1st:0.025
 2:0.013
 2.0:0.043
 2003:0.056
 2005:0.056
    Top Terms: 
    Weight : 
props 
 optional
:  Point:
    1.0:
 15th:0.068

现在我正在阅读此文本并将其存储到字符串数组中:String [] Result

我的代码:

for(String t1: Result){
Pattern = Pattern.compile("\\b:[0-9]\\b");
                matcher = pattern.matcher(t1);
                if(matcher.find()){
                    System.out.println(t1);
}

输出我得到:

09:0.023
 15th:0.023
 1987:0.025
 1st:0.025
 2:0.013
 2.0:0.043
 2003:0.056
 2005:0.056
    Top Terms: 
    Weight : 
 15th:0.068

但是我不想要这个输出。我的输出应该是这样的:

09:0.023
 15th:0.023
 1987:0.025
 1st:0.025
 2:0.013
 2.0:0.043
 2003:0.056
 2005:0.056
 15th:0.068

给我一​​些关于我必须应用什么正则表达式才能获得此输出的想法。

最佳答案

我怀疑

2005:0.056
    Top Terms: 
    Weight :

实际上是一行......不知何故。

那个正则表达式应该(只)匹配你有一个由单个数字组成的“单词”的行。


我猜你确实知道这一点(而且你“忘了提及”)。

如果你想匹配这些:

 2005:0.056 
 15th:0.023
 1st:0.023
 2nd:0.023
 3rd:0.023

但不是这些:

 2005:0.056 Top Terms:  Weight :
 1.0:

然后你需要一个更严格的正则表达式,和 match() 而不是 find;例如

pattern = Pattern.compile(
              "\\s*[0-9]+(st|nd|rd|th|(\\.[0-9]+))?:[0-9]+\\.[0-9]+\\s*");
for (String t1: Result) {
    matcher = pattern.matcher(t1);
    if (matcher.match()) {
        System.out.println(t1);
    }
}

但此时我猜测您对“有效”行的实际标准是什么。

关于java - 如何从java中的String中删除特定的String,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18328474/

相关文章:

database - 将哈希写入文件的最佳方法

arrays - 用C在数组中移动指针

java - 按 JRadiobutton 卡住 GUI

java - 如何使用相同的库两次配置不同版本的 Maven

MYSQL 对每个字母使用多个 CASE REGEXP 作为表行,并且还允许对每个所述 REGEXPied 字母进行重复/重复计算

java - 正则表达式:完全匹配由定界符分割的字符串

javascript - 如何在 JavaScript 中使用正则表达式拆分由多个部分组成的字符串?

performance - 多线程时现代操作系统上的目录漫游器变慢?

Java实例变量的内存分配

java - 使Spring-XD和hdfs下沉适用于maprfs