#include <StringConstants.au3> ; to declare the Constants of StringRegExp
#include <Array.au3> ; UDF needed for _ArrayDisplay and _ArrayConcatenate
Local $sRegex = "(?m)(?i)^\s*(.*((p|post)[-.\s]*(o|off|office)[-.\s]*(b|box|bin)[-.\s]*)|.*((p|post)[-.\s]*(o|off|office)[-.\s]*)|.*((p|post)[-.\s]*(b|box|bin)[-.\s]*)|(box|bin)[-.\s]*)(#|n|num|number)?\s*\d+"
Local $sString = "-- Match" & @CRLF & _
"post office box 1" & @CRLF & _
"post office bin 1" & @CRLF & _
"post office b 1" & @CRLF & _
"post off box 1" & @CRLF & _
"post off bin 1" & @CRLF & _
"post off b 1" & @CRLF & _
"post o box 1" & @CRLF & _
"post o bin 1" & @CRLF & _
"post o b 1" & @CRLF & _
"p office box 1" & @CRLF & _
"p office bin 1" & @CRLF & _
"p office b 1" & @CRLF & _
"p off box 1" & @CRLF & _
"p off bin 1" & @CRLF & _
"p off b 1" & @CRLF & _
"p o box 1" & @CRLF & _
"p o bin 1" & @CRLF & _
"p o b 1" & @CRLF & _
"p-o-b-1" & @CRLF & _
"p.o.b.1" & @CRLF & _
"POB1" & @CRLF & _
"pob1" & @CRLF & _
"pob#1" & @CRLF & _
"pob #1" & @CRLF & _
"pob # 1" & @CRLF & _
" p o b # 1 x" & @CRLF & _
" p o b # 1 x" & @CRLF & _
"pob n1" & @CRLF & _
"pob num1" & @CRLF & _
"pob number1" & @CRLF & _
"foo pob1" & @CRLF & _
"1 pob1" & @CRLF & _
"box 1" & @CRLF & _
"bin 1" & @CRLF & _
"box-1" & @CRLF & _
"box.1" & @CRLF & _
"box1" & @CRLF & _
"BOX1" & @CRLF & _
"box#1" & @CRLF & _
"box #1" & @CRLF & _
"box # 1" & @CRLF & _
" box # 1 x" & @CRLF & _
" box # 1 x" & @CRLF & _
"po 1" & @CRLF & _
"po n1" & @CRLF & _
"PO 1" & @CRLF & _
"pb 1" & @CRLF & _
"pb n1" & @CRLF & _
"PB 1" & @CRLF & _
"" & @CRLF & _
"-- No Match" & @CRLF & _
"foo box 1" & @CRLF & _
"b1" & @CRLF & _
"#1" & @CRLF & _
"1 box 1" & @CRLF & _
"1 pob" & @CRLF & _
"post 1" & @CRLF & _
"n1" & @CRLF & _
"number1" & @CRLF & _
"num1" & @CRLF & _
"post office box" & @CRLF & _
"post office bin" & @CRLF & _
"post office b" & @CRLF & _
"post off box" & @CRLF & _
"post off bin" & @CRLF & _
"post off b" & @CRLF & _
"post o box" & @CRLF & _
"post o bin" & @CRLF & _
"post o b" & @CRLF & _
"p office box" & @CRLF & _
"p office bin" & @CRLF & _
"p office b" & @CRLF & _
"p off box" & @CRLF & _
"p off bin" & @CRLF & _
"p off b" & @CRLF & _
"p o box" & @CRLF & _
"p o bin" & @CRLF & _
"p o b" & @CRLF & _
"p-o-b-" & @CRLF & _
"p.o.b." & @CRLF & _
"POB" & @CRLF & _
"pob" & @CRLF & _
"pob#" & @CRLF & _
"pob #" & @CRLF & _
"pob #" & @CRLF & _
" p o b # x" & @CRLF & _
" p o b # x" & @CRLF & _
"pob n" & @CRLF & _
"pob num" & @CRLF & _
"pob number" & @CRLF & _
"foo pob" & @CRLF & _
"box" & @CRLF & _
"bin " & @CRLF & _
"box-" & @CRLF & _
"box." & @CRLF & _
"box" & @CRLF & _
"BOX" & @CRLF & _
"box#" & @CRLF & _
"box #" & @CRLF & _
"box # " & @CRLF & _
" box # x" & @CRLF & _
" box # x" & @CRLF & _
"po" & @CRLF & _
"po n" & @CRLF & _
"PO" & @CRLF & _
"pb" & @CRLF & _
"pb n" & @CRLF & _
"PB"
Local $aArray = StringRegExp($sString, $sRegex, $STR_REGEXPARRAYGLOBALFULLMATCH)
Local $aFullArray[0]
For $i = 0 To UBound($aArray) -1
_ArrayConcatenate($aFullArray, $aArray[$i])
Next
$aArray = $aFullArray
; Present the entire match result
_ArrayDisplay($aArray, "Result")
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for AutoIt, please visit: https://www.autoitscript.com/autoit3/docs/functions/StringRegExp.htm