0

こんにちは私は自分のマシンの経度と緯度の座標を実行して見つけるJavaプログラムを持っています、それはこれを以下の長い文字列として出力します、

htt://maps.google.com/maps?q = 52.258301、+-7.111900+(192.168.159.1Country:Ireland、City:Waterford-by htt://www.javaquery.com)&iwloc = A&hl = en

私が今やろうとしているのは、この文字列からのみ抽出することです。IPアドレスと2つの座標、IPアドレスの取得に成功しましたが、2つの座標を取得できないようです。最終結果はうまくいけば

192.168.159.1,52.258301、+-7.111900

これまでのところ、iveはこれらの式を使用してIPアドレスを取得していました

(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)

これは問題なく機能し、これを使用して座標を取得しようとしました

[0-9]+(\\.[0-9][0-9]?)?

ただし、最初の座標とそれに続く座標のみを取得します

ありがとう

4

2 に答える 2

1

この正規表現を試してください:

"(?<=\\?q=)([^(]*)\\(([\\d.]*)"

group(1)52.258301,+-7.111900+

group(2) is the ip

正規表現マッチング/抽出の追加コードを編集します

String regex = "(?<=\\?q=)([^(]*)\\(([\\d.]*)";
        String s = "htt://maps.google.com/maps?q=52.258301,+-7.111900+(192.168.159.1Country:Ireland,City:Waterford-by htt://www.javaquery.com)&iwloc=A&hl=en";
        Pattern p = Pattern.compile(regex);
        Matcher m = p.matcher(s);
        if (m.find()) {
            System.out.println(m.group(2));
            System.out.println(m.group(1));
        }

出力:

192.168.159.1
52.258301,+-7.111900+
于 2013-03-05T14:53:04.420 に答える
0

正規表現を使用せずに2つの座標を抽出する方法は、次のとおりです。

String str="http://maps.google.com/maps?q=52.258301,+-7.111900+(192.168.159.1Country:Ireland,City:Waterford-by htt://www.javaquery.com)&iwloc=A&hl=en";

int index_x=str.indexOf("?q=")+"?q=".length();
int index_x_end=str.indexOf(",");
int index_y=index_x_end+",".length();
int index_y_end=str.indexOf("+(");

System.out.println(str.substring(index_x, index_x_end));    //prints 52.258301
System.out.println(str.substring(index_y, index_y_end));    //prints +-7.111900
于 2013-03-05T14:59:54.163 に答える