【发布时间】:2015-03-18 19:57:30
【问题描述】:
我有一个这样的字符串:
String = IDENTIFIER: 115956 LATITUDE: 40.104730 LONGITUDE: -88.228798 DATE RIGHTS
我只想匹配并打印出115956 | 40.104730 | -88.228798。用正则表达式怎么做?
这是我的代码:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test3
{
private static String REGEX = "\\d+\\.\\d";
private static String INPUT = "IDENTIFIER: 115956 LATITUDE: 40.104730 LONGITUDE: -88.228798 ";
private static String REPLACE = "-";
public static void main(String[] args) {
Pattern p = Pattern.compile(REGEX);
Matcher m = p.matcher(INPUT); // get a matcher object
StringBuffer sb = new StringBuffer();
while(m.find()){
m.appendReplacement(sb,REPLACE);
}
m.appendTail(sb);
System.out.println(sb.toString());
}
}
但我的结果是这样的:IDENTIFIER: 115956 LATITUDE: -04730 LONGITUDE: --28798。
【问题讨论】:
-
m.appendReplacement(sb,REPLACE);将找到与REPLACE值匹配的位置。我怀疑这是你想要的。考虑将StringJoiner与分隔符" | "一起使用,并将您在输入中找到的每个数字放入以生成115956 | 40.104730 | -88.228798。