私が一致させようとしているパターンは、いくつかの文字 (文字 + 数字 + ハイフン(-))、次に 5 桁、次に 9 桁です。パターンの各部分はハイフンで区切られます(-)。5 桁と 9 桁の部分はオプションです。つまり、一方が存在し、他方が存在しないか、両方が存在するか、両方が存在しない可能性があります。したがって、パターンは次のようになります
bla-12-bla-98-bla-12345-123456789 all parts(characters+5-digit+9-digit)
bla-bla-123-12345 9-digit part absent
blasd-123456789 5-digit part absent
no-1045-numeric-bla-bla both numeric parts absent
私が思いついた正規表現はこれです
.+(\d{5})?-?(\d{9})?$
上記の理由は次のようになります。.+最初の はすべての文字に一致するため(\d{5})?、5 桁の部分の 0 または 1 つのインスタンスが存在する可能性があるため、省略可能になります。
の場合-?、両方の数値部分が存在しない場合は存在しません-が、両方の数値部分が存在する場合は 1 に-なるため、ここでもオプションにします。
についても同様です(\d{9})?。
しかし、上記のパターンは何にも一致しません。私は python を使用しているので、group(1)とgroup(2)returnの両方を使用していNoneます。
上記の何が問題になっていますか?