繁体   English   中英

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

[英]Get a specific word out of a String with regex

我有一个字符串

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]时它忽略了整行,并且就像你可以看到我有一行代价。 这是它从字符串中删除-meta:0的方式:

String meta = string.replaceAll("( -meta:[0-9])", "");
System.out.println(meta);

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

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

您应该在捕获的组中捕获您的匹配并使用它的替换参考:

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

RegEx演示

据我了解您的要求,您希望:

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]并保留它并删除其他找到的组

暂无
暂无

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

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