1

次のような文字列がいくつかあります。

新しい google.maps.LatLng(52.80359, -4.7127),

新しい google.maps.LatLng(53.80645306, -5.45455287),

新しい google.maps.LatLng(51.8035914546, -4.7123622894287),

経度と緯度の両方を取得する必要があるため、数値ごとに 1 つの正規表現、可能な場合は - 記号を含める必要があります。

オンラインでいくつかのツールを試しましたが、適切なパターンを見つけるものはありません

4

3 に答える 3

1

C#では、次のようにRegex.Matchを使用します。

using System.Text.RegularExpressions;
...
Match match = Regex.Match(input, @"([-]?\d+(?:[.]\d+)?)\D+?([-]?\d+(?:[.]\d+)?)");
if (match.Success)
{
  string Lat = match.Groups[1].Value;
  string Lng = match.Groups[2].Value;
}
于 2012-11-08T19:42:38.570 に答える
1

grepを使用するだけですgrep -oE '[-0-9]+\.[0-9]+'

$ echo "new google.maps.LatLng(52.80359, -4.7127)," | grep -oE '[-0-9]+\.[0-9]+'
52.80359 
-4.7127

$ echo "new google.maps.LatLng(53.80645306, -5.45455287)," | grep -oE '[-0-9]+\.[0-9]+'
53.80645306 
-5.45455287

$ echo "new google.maps.LatLng(51.8035914546, -4.7123622894287)," | grep -oE '[-0-9]+\.[0-9]+'
51.8035914546 
-4.7123622894287

Grepは、ファイル(または標準出力)内の行を特定のパターンと照合するためのコマンド ライン ツールです。これは、一致する行-oの一部を表示するように grep に指示します (デフォルトでは、grep は指定されたパターンに一致する行全体を表示します)。拡張正規表現-Eを使用するために grep を使用するように grep に指示します。

regexpパターンは[-0-9]マイナス記号に一致するか、-digitのように前の項目を1+回以上繰り返します。つまりabc123xyz一致するのは、エスケープする必要がある小数点以下の桁数だけ123ではありません1。再び 使用。\.\.regexp[0-9]+

の詳細については、リファレンスを参照してくださいregular expressions

于 2012-11-08T19:38:18.007 に答える
1

私はこのアプローチを使用します:

LatLng\((-*\d+\.*\d+),\s(-*\d+\.*\d+)\)

おそらく必要以上に一致しますが、緯度をキャプチャ グループ 1 に、経度をキャプチャ グループ 2 に配置します。どちらも周囲の括弧とコンマを除外します。

ここで動作を確認してください: http://regexr.com?32od6

于 2012-11-08T19:39:35.323 に答える