我使用正则表达式的经验很少,我需要使用正则表达式解析表示为方位角的角度值,例如:
"N45°20'15.3"E"
代表:45度,20分15.3秒,位于NE象限。
限制是:
- 第一个字符可以是“N”或“S”
- 最后一个字符可以是“E”或“W”
- 0 <= 度 <= 59
- 0 <= 分钟 <= 59
- 0 <= second < 60,可以省略。
最好使用 Python 或任何其他语言。
谢谢
试试这个正则表达式:
^([NS])([0-5]?\d)°([0-5]?\d)'(?:([0-5]?\d)(?:\.\d)?")?([EW])$
它匹配任何字符串……</p>
^([NS]) 以N或开头S([0-5]?\d)° 后跟一个度数,可以是0和9( \d) 之间的单个数字,也可以是两个数字,第一个0和5( [0-5]) 之间,第二个0和9,因此在0and之间59,后跟°([0-5]?\d)' 后跟一个分钟值(同样介于0和之间59)和'(?:([0-5]?\d)(?:\.\d)?")? 可选地后跟一个秒值和"符号,秒值之间0和59一个可选的附加小数点,和([EW])$ 以Eor结尾W。如果您不想让十以下的值前面有零,请将 更改[0-5]为[1-5]。
您可以使用的模式:
pat = r"^([NS])(\d+)°(\d+)'([\d.]*)\"?([EW])$"
一种使用方法:
import re
r = re.compile(pat)
m = r.match(thestring)
if m is None:
print "%r does not match!" % thestring
else:
print "%r matches: %s" % (thestring, m.groups())
正如您会注意到的那样,在匹配时,会为您提供匹配每个括号括起来的“组”m.groups()的各个部分——一个字母 N 或 S,然后是一个或多个数字的度数,等等。我想这就是你这里的意思是“解析”。thestringpat