使用正则表达式从字符串中获取特定单词

时间:2017-04-28 15:52:28

标签: java regex string

我有一个字符串

String string = "-minY:50 -maxY:100 -minVein:8 -maxVein:10 -meta:0 perChunk:5;";

我想以某种方式使用正则表达式获取-meta:0(替换除-meta:0之外的所有内容),我创建了一个正则表达式删除-meta:0但是我无法删除所有内容除了-meta:0 我尝试使用其他一些正则表达式,但当我有-meta:[0-9]时它忽略了整行,并且就像你可以看到我有一行代价。 这是它从String:

中删除-meta:0的方式
String meta = string.replaceAll("( -meta:[0-9])", "");
System.out.println(meta);

我只是想以某种方式反转并删除除-meta之外的所有内容:[0-9]

我无法在网页上找到关于我的问题的任何内容,因为在发现这个词之后,所有内容都忽略了整行,如果有类似的内容,那就很抱歉。

2 个答案:

答案 0 :(得分:2)

您应该在捕获的群组中捕捉您的匹配,并将其替换为替换为:

String meta = string.replaceAll("^.*(-meta:\\d+).*$", "$1");
System.out.println(meta);
//=> "-meta:0"

RegEx Demo

答案 1 :(得分:1)

根据我的理解,您希望:

a)您想从字符串

中提取meta*

b)用""

替换其他所有内容

您可以执行以下操作:

String string = "-minY:50 -maxY:100 -minVein:8 -maxVein:10 -meta:0 perChunk:5;";


Pattern p = Pattern.compile(".*(-meta:[0-9]).*");
Matcher m = p.matcher(string);

if ( m.find() )
{
    string = string.replaceAll(m.group(0),m.group(1));

    System.out.println("After removal of meta* : " + string);
}

此代码的作用是找到meta:[0-9]并保留它并删除其他找到的组