0
は、私はいくつかの文字列があると、特定の文字で区切られた数字の2グループ、:マッチなど
N00E001
N00W001
N00E002
がどのような各文字列に数字の両方のグループを見つける最適な正規表現になります?
私は正規表現で最高ではありません。ここで私は現在作業している:(\d+)[W|E](\d+)
です。
は、私はいくつかの文字列があると、特定の文字で区切られた数字の2グループ、:マッチなど
N00E001
N00W001
N00E002
がどのような各文字列に数字の両方のグループを見つける最適な正規表現になります?
私は正規表現で最高ではありません。ここで私は現在作業している:(\d+)[W|E](\d+)
です。
"(\d+)[W|E](\d+)"
も"N00|001"
と一致します。
ので
"(\d+)[WE](\d+)"
は罰金を行う必要があります。
あなたは常に正確に同じフォーマットを持っている場合は、あなたがより制限正規表現を使用することができます。
"\A[NS]\d{2}[WE]\d{3}\Z"
これは一致します
完全一致は完全な文字列でなければなりません。 "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
だからあなたの正規表現に問題があるのでしょうか? – Kasramvd
オプション( '[]')の中に '|'は必要ありません。 – Jules
文字列は常に孤立しているか、大きな文字列の中にありますか( ''blah blah N00E001 blah'')?文字列は常に7文字ですか?あなたがマッチしたくない '' N00X001 'のような文字列がありますか?あなたの文字列が常に7文字であれば 'EW 'のs [3]なら:numbers = s [1:3] + s [4:]'。すべての文字列が適切な場合は、if節を省略できます。 –