我有一个包含一堆不同邮政编码的文件:
12345
12345-6789
1234567890
12345:6789
12345-7890
12:1234678
我只想匹配格式为12345
or的代码12345-6789
,但忽略所有其他形式。
我有我的正则表达式:
grep -E '\<[0-9]{5}\>[^[:punct:]]|\<[0-9]{5}\>-[0-9]{4}' samplefile
它匹配 the,12345-6789
因为“或”子句匹配那个特定的子句。我很困惑为什么它不会在第一个匹配,12345
因为我的表达应该说“匹配 5 个数字但忽略任何标点符号”。