java - 特定位置的部分字符串(#17。和#5。)

标签 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();

最佳答案

你可以使用这个正则表达式:

(?=#\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

关于java - 特定位置的部分字符串(#17。和#5。),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39788957/

相关文章:

javascript - 在 cucumber-js 中检索在特定字符串之前结束的参数

用于识别 HTML 标签的正则表达式(仅作为正则表达式重复学习练习!!)

java - Soap header (序言中出现意外的 EOF)

java - 使用 JDOM 保存带单引号的 XML 文件

java - 如果该行包含字符串匹配的任何部分,则使用扫描仪显示整行(Java)

java - GridView中图片无法显示?

javascript - 正则表达式 英国邮政编码 Javascript 空间问题

regex - R 中第 n 次出现的正则表达式

java - 如何使用 Actions 类在 chrome 中打开新选项卡

sql - TSQL使用正则表达式提取字符串的一部分