Java 特定位置的零件串(#17.和#5.)

Java 特定位置的零件串(#17.和#5.),java,regex,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.0

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

这是基于给定信息的正则表达式

它从您的输入中提取三个数据集

如果有比您最低限度指定的规则更多的规则,您将不得不进行调整

我建议去一个网站练习。这里有很多有用的信息,还有现场练习的能力

(#[\d]{1,3}.[\d]{6},E,[\d]{2}.[\d]{6},N,[\d]{1}.[\d]{2},[\d]{1}.[\d]{2}#[\d]{6}#[\d]{6})

您可以使用此正则表达式:

(?=#\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个数字,然后是一个点

你试过什么吗?它是什么语言?@ThomasAyoub在这里用javalooky:你的正则表达式可能有点像:“(#d+.\d+,E,\d+.\d+,N,\d+.\d+,\d+.\d+.\d+.”如果你不需要
\010104\004500
部分,你应该在
上使用拆分,谢谢你的回答。它适用于问题中的示例,但如果我有以下字符串“#114.034407,E,22.648272,N,0.00,0.00#010104#004500#114.034407,E,22.648272,N,0.00,0.00#010104#004500”,我得到的数组包含3个字符串,其中第一个字符串为空(无值)。有没有可能修复正则表达式来调整大小写?@water我无法重现您的问题。也许您应该尝试使用Ideone来共享或手动删除数组的空值。