繁体   English   中英

如何在JAVA中使用正则表达式在字符串行中找到特定字符串?

[英]how can i find specific strings in string lines using regular expression in JAVA?

我这里有三个字符串。


第1:56行,C0348 | 23064,C0319 | 23182,C0127 | 1476,C0378 | 2004,C0260 | 3306,C0091 | 23179,C0525 |

第2行:8966,T4992 | 4446,T4992 | 4445,E | 8965,E; T4992 | 8964,E; C0163 |

第3:920行,M128; C0323 |


现在,我的目标是删除形式为“Tnumber |”,“Cnumber |”的字符串 ,“Mnumber |”。

例如,在第一行中,我想删除“C0348 |”,“C0319 |”,“C0127 |”,“C0378 |”,“C0260 |”,“C0091 |”,“C0525 |”。

在第二行,T4992 |,T4992,T4992 |,C0163 |

在第三行,M128; C0323 |

如何从每个字符串行中删除这些字符串?

我想我需要使用正则表达式,对吧? 但是,我仍然无法解决这个问题。

请你帮助我好吗?

您可以像这样使用正则表达式

import java.util.regex.Pattern;

public class Test {

    private static final String REGEX = "(T|M|C)\\d+(;|\\|)?";
    private static final Pattern p = Pattern.compile(REGEX);

    public static String filterer(String inputString) {
        String result = "";
        for(String s : p.split(inputString)) {
            result += s;
        }
        return result;
    }

    public static void main(String[] args) {
        System.out.println(filterer("56,C0348|23064,C0319|23182,C0127|1476,C0378|2004,C0260|3306,C0091|23179,C0525|"));
        System.out.println(filterer("8966,T4992|4446,T4992|4445,E|8965,E;T4992|8964,E;C0163|"));
        System.out.println(filterer("920,M128;C0323|"));
    }
}

产量

56,23064,23182,1476,2004,3306,23179,
8966,4446,4445,E|8965,E;8964,E;
920,

RegEx演示

正则表达式可视化

Debuggex演示

当然,我们可以使用像这样的字符类,而不是拥有捕获组

正则表达式可视化

Debuggex演示

您可以尝试使用[TCM]\\d+[\\|;]http: //regexr.com/v1?38ls3的正则表达式。 而作为java源码:

String reg= "[TCM]\\d+[\\|;]";
String line = "56,C0348|23064,C0319|23182,C0127|1476,C0378|2004,C0260|3306,C0091|23179,C0525|";
line = line.replaceAll(reg, "");
System.out.println(line);
line = "8966,T4992|4446,T4992|4445,E|8965,E;T4992|8964,E;C0163|";
line = line.replaceAll(reg, "");
System.out.println(line);
line = "920,M128;C0323|";
line = line.replaceAll(reg, "");
System.out.println(line);

输出:

56,23064,23182,1476,2004,3306,23179,
8966,4446,4445,E|8965,E;8964,E;
920,

因为这些是逗号分隔值,您可以将它们拆分为

String arr[] = line.split (",");

// iterate over them
int index = arr[0].indexOf ("|");
if (index != -1) {

   // do substring
} 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM