匹配由特定字符分隔的2组数字

时间:2017-02-14 16:00:26

标签: python regex

说我有几个字符串,例如:

N00E001 N00W001 N00E002

在每个字符串中找到两组数字的最佳正则表达式是什么?

我对正则表达式不是最好的。以下是我目前正在使用的内容:(\d+)[W|E](\d+)

1 个答案:

答案 0 :(得分:2)

"(\d+)[W|E](\d+)"

也会匹配"N00|001"

所以

"(\d+)[WE](\d+)"

应该没问题。

如果您始终使用完全相同的格式,则可以使用限制性更强的正则表达式:

"\A[NS]\d{2}[WE]\d{3}\Z"

这将匹配:

  • a N或S
  • 后跟2位数字
  • 后跟E或W
  • 后跟3位数字

整场比赛应该是完整的比赛。例如,"Location N00W001"不匹配。

测试

import re

strings = ["N00E001", "N00W001", "N00E002"]

pattern = re.compile("\A[NS]\d{2}[WE]\d{3}\Z")

print all(pattern.match(string) for string in strings)
# True