さまざまな郵便番号のファイルがあります。
12345
12345-6789
1234567890
12345:6789
12345-7890
12:1234678
12345
またはの形式のコードにのみ一致させたいが、12345-6789
他のすべての形式は無視したい。
私の正規表現は次のとおりです。
grep -E '\<[0-9]{5}\>[^[:punct:]]|\<[0-9]{5}\>-[0-9]{4}' samplefile
12345-6789
「or」句がその特定の句に一致するため、これは一致します。12345
私の表現は「5つの数字に一致するが句読点は無視する」と言うべきなので、なぜ最初に一致しないのか混乱しています。