使用以下正则表达式:
^(?:\d|[1-9]\d|1[0-5]\d|168)(?:.\d+)?[NS]$
解释:
^ - 匹配行的开头
(?:\d|[1-9]\d|1[0-5]\d|168) - 接受0到168之间的任何数字,这个部分不接受前导0
(?:.\d+)? - 匹配小数部分
[NS] - 匹配字母N或S
$ - 匹配行的末尾
示例:
import re
pattern = r'^(?:\d|[1-9]\d|1[0-5]\d|168)(?:.\d+)?[NS]$'
test_cases = ['20N', '120.5S', '168S', '200.3N']
for test in test_cases: match = re.match(pattern, test) if match: print(f"{test} 匹配成功") else: print(f"{test} 匹配失败")