part特定位置的字符串(#17。和#5。)

时间:2016-09-30 10:07:07

标签: java regex

我有以下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();

2 个答案:

答案 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})