0

我有以下字符串。它是度、分和秒格式的 LatLongs,可以按如下方式输入:

Option1: 25º 23" 40.6' or
Option2: 25º 23'' 40.6' or
Option3: 25 23 40.6

使用一个正则表达式我想匹配两个字符串,对我来说问题是匹配“(双引号)和''(两个单引号)。
到目前为止我有以下内容。

^[+|-]?[0-9]{1,2}[\º| ][ ]?[0-9]{1,2}[\"|'{2}| ] 

我正在 lunix(Ubuntu)上的终端中构建和测试 regx。
从我在终端中得到的输出中,它匹配“(双引号)但只有一个''(两个单引号)。
我怎样才能更改正则表达式以匹配“(双引号)和''(两个单引号) ),在一个表达式中?

提前致谢。

4

3 回答 3

1

看看这个模式:

([+-]?\d{1,2}(?:\.\d{1,2})?.)\s*(\d{1,2}(?:\.\d{1,2})?[\S]*)\s*(\d{1,2}(?:\.\d{1,2})?'?)

它独立于任何特殊字符,包括最多支持 2 位数字,以及您的问题的解决方案。

于 2013-05-20T08:53:30.970 回答
0

我认为您真正想要的正则表达式是

^[+|-]?[0-9]{1,2}º? ?[0-9]{1,2}(\"|'{2})? ?[0-9]{1,2}\.[0-9]'?

虽然这也匹配奇怪的东西,比如

25 23'' 40.6

您的正则表达式使用只能匹配一个字符的自定义字符类(和 中的部分[) 。您可以通过and]将多个字符组合在一起,并使用 . 使这些组可选。()?

于 2013-05-20T08:35:23.843 回答
0

你的正则表达式有问题。例如,[\"|'{2}| ]匹配单个", |, ', {, 2,}. 尝试以下操作:

^([+-]?\d+)º? ?\b(\d+)\b(?:''|\")? ?([\d.]+)'?$

解释:

^               # Start of string
([+-]?\d+)      # Match an integer
º?[ ]?          # Match a degree and/or a space (both optional)
\b(\d+)\b       # Match a positive integer (entire number)
(?:''|\")?[ ]?  # Match quotes and/or space (all optional)
([\d.]+)        # Match a floating point number
'?              # Match an optional single quote
$               # End of string
于 2013-05-20T08:30:36.717 回答