Users can enter an acronym for "Post Office Box" a number of ways, like P.O. Box, PO Box, etc. PO Boxes always have a number after it.

Am trying to get matches on all possible ways users could enter it in a string. Sometimes user will enter in something before PO Box, and I just need to match if it looks like the string is related to PO Box. 

Looking for an expression that matches 1-6 below but doesn't match 7-10.

G.P.O. Box = General Post Office Box and that I'm trying to avoid matches on those.
I think the expression must allow either a blank or no other character before the 'P'.

I've come up with below, but it's not skipping GPO Boxes, or weird things like 'PPO BOX'

```
P{1}\s?\.?O{1}\.?\s+(BOX)\s+[0-9]*

```

[regex.com](https://regexr.com/4sri0)

1. PO BOX 123
2. P.O BOX 655
3. P.O. BOX 155
4. PO BOX 1
5. P O BOX 123
6. blahblah PO BOX 123
7. GPO BOX 123
8. blah G P O BOX 111
9. P O B OX
10. PP.O BOX 122

any help would be appreciated. Thanks!