匹配两个单引号或双引号

时间:2013-05-20 08:22:24

标签: regex

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

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

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

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

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

提前致谢。

3 个答案:

答案 0 :(得分:1)

查看此模式:

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

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

答案 1 :(得分:0)

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

<强>解释

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

答案 2 :(得分:0)

我认为您真正希望使用上面的Regex是

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

虽然这也匹配奇怪的事情,如

25 23'' 40.6

您的正则表达式使用自定义字符类([]中的部分),它们只能匹配一个字符。您可以按()将多个字符组合在一起,并使用?将这些组设为可选字段。