我有以下gps位置字符串
#114.034407,E,22.648272,N,0.00,0.00#010104#004500#17.034407,E,22.648272,N,0.00,0.00#010104#004500#5.034407,E,22.648272,N,0.00,0.00#010104#004500
我希望将其置于经度位置(#17。,#5。)。所有经度位置都以#
开头,并且在最佳或第一和第二或第一,第二和第三之后包含.
点。如何通过正则表达式获得此结果?
结果:
#114.034407,E,22.648272,N,0.00,0.00#010104#004500
#17.034407,E,22.648272,N,0.00,0.00#010104#004500
#5.034407,E,22.648272,N,0.00,0.00#010104#004500
代码
Pattern pattern = Pattern.compile("regular expression");
Matcher matcher = pattern.matcher(gpsPacket);
matcher.matches();
答案 0 :(得分:1)
您可以使用此正则表达式:
(?=#\d{1,3}\.)
使用此代码:
import java.util.*;
import java.lang.*;
import java.io.*;
class YourClass
{
public static void main (String[] args) throws java.lang.Exception
{
String str = "#114.034407,E,22.648272,N,0.00,0.00#010104#004500#17.034407,E,22.648272,N,0.00,0.00#010104#004500#5.034407,E,22.648272,N,0.00,0.00#010104#004500";
String delimiters = "(?=#\\d{1,3}\\.)";
String[] coordinates = str.split(delimiters);
for(String coordinate : coordinates) {
System.out.println(coordinate);
}
}
}
它会将字符串拆分为#
,然后是1到3的数字,然后是一个点。 Live demo
答案 1 :(得分:0)
这是基于所提供信息的正则表达式。
它从您的输入中提取三个数据集。
如果规则多于您指定的规则,则必须进行调整。
我建议去一个网站练习。这里有很多有用的信息RegExr,以及实时练习的能力。
(#[\d]{1,3}.[\d]{6},E,[\d]{2}.[\d]{6},N,[\d]{1}.[\d]{2},[\d]{1}.[\d]{2}#[\d]{6}#[\d]{6})