3

以下のパターンに従うテキストを検証しようとしています。

  • 先頭に「point(」というテキストが必要です
  • 小数点以下 5 桁までの緯度の数値が続く必要があります (例: 42.12345)
  • 後にコンマ「,」を付ける必要があります
  • 小数点以下 5 桁までの経度の数値が続く必要があります (例: -81.12345)
  • その後に閉じ括弧 ")" を付ける必要があります

マッチング例:

  • ポイント(42.12345,-81.12345)

どんな助けでも大歓迎です。

ありがとう。

4

4 に答える 4

4

ここで少し分割して、正規表現を簡単に作成できます。

  • point(最初に一致させるには、-を使用します^point\(
  • 緯度または経度の数値を一致させるには、-を使用します[-]?\d+(?:\.\d+)?
  • )また、最後に一致させるには、を使用します\)$

について[-]?\d+(?:\.\d+)?は、ここに説明があります:-

  • [-]? -開始時のオプションのnegative (-)記号に一致します(? quantifier終了時は0または1を意味します)
  • \d+ -1つ以上の数字に一致します
  • (?:\.\d+)? -オプションdecimalのに一致し、その後に。が続きone or more digitsます。dot(。)は正規表現の特殊メタ文字であるため、一致させる場合はエスケープする必要があります。

また、桁数をに制限するには、最小1桁と最大5桁に一致するの代わりに5-を使用できます。\d{1,5}\d+

^(caret)$(dollar)アンカーは文字列の最初と最後に一致します。

だから、ここにあなたの正規表現があります:-

^point\([-]?\d+(?:\.\d{1,5})?,[-]?\d+(?:\.\d{1,5})?\)$
于 2012-12-11T17:11:26.737 に答える
2

これを試して:

^point\(\-?\d+\.\d{1,5},\-?\d+\.\d{1,5}\)$
  • 最初にテキスト「point(」が必要です:^point\(
  • その後に、小数点以下5桁までのLatitude数値を続ける必要があります(例:42.12345)。\-?\d+\.\d{1,5}
  • その後にコンマ「、」を付ける必要があります:,
  • その後に、小数点以下5桁までの経度の数値を続ける必要があります(例:-81.12345)。\-?\d+\.\d{1,5}
  • その後に閉じ括弧")"を付ける必要があります。\)$

緯度と経度のロジックは、このようにさらに分割できます。

  • \-?=負の符号が存在する場合は一致します(正規表現では特別な意味が\あるため、でエスケープする必要があります)-
  • \d+= 1つ以上の10進文字に一致します(つまり0、から9
  • \.=ピリオドに一致します(.単独では特別な意味があり、エスケープする必要があります)
  • \d{1,5}= 10進数の1〜5文字に一致
于 2012-12-11T17:12:04.507 に答える
1

このようなもの:

point\((?<lat>-?\d+\.\d{1,5}),(?<long>-?\d+\.\d{1,5})\)

expressoなどの正規表現ツールを使用してみてください:http ://www.ultrapico.com/Expresso.htm

于 2012-12-11T17:12:39.847 に答える
0

どうですか:

^point\((\-?\d+(\.\d+)?),\s*(\-?\d+(\.\d+)?)\)$
于 2012-12-11T17:11:10.223 に答える