$re = '/\b(?<pool>([A-Z])\2{0,2})(?<number>(\d{1,2}(?!\d)|100))\b/m';
$str = 'A
1
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
A13
A14
A15
A16
A17
A18
A19
A20
A21
A22
A23
A24
A25
A26
A27
A28
A29
A30
A31
A32
A33
A34
A35
A36
A37
A38
A39
A40
A41
A42
A43
A44
A45
A46
A47
A48
A49
A50
A51
A52
A53
A54
A55
A56
A57
A58
A59
A60
A61
A62
A63
A64
A65
A66
A67
A68
A69
A70
A71
A72
A73
A74
A75
A76
A77
A78
A79
A80
A81
A82
A83
A84
A85
A86
A87
A88
A89
A90
A91
A92
A93
A94
A95
A96
A97
A98
A99
A100
A101
A102
A103
AA1
AA2
AA3
AA4
AA5
AA6
AA7
AA8
AA9
AA10
AA11
AA12
AA13
AA14
AA15
AA16
AA17
AA18
AA19
AA20
AA21
AA22
AA23
AA24
AA25
AA26
AA27
AA28
AA29
AA30
AA31
AA32
AA33
AA34
AA35
AA36
AA37
AA38
AA39
AA40
AA41
AA42
AA43
AA44
AA45
AA46
AA47
AA48
AA49
AA50
AA51
AA52
AA53
AA54
AA55
AA56
AA57
AA58
AA59
AA60
AA61
AA62
AA63
AA64
AA65
AA66
AA67
AA68
AA69
AA70
AA71
AA72
AA73
AA74
AA75
AA76
AA77
AA78
AA79
AA80
AA81
AA82
AA83
AA84
AA85
AA86
AA87
AA88
AA89
AA90
AA91
AA92
AA93
AA94
AA95
AA96
AA97
AA98
AA99
AA100
AA101
AA102
AA103
AAA1
AAA2
AAA3
AAA4
AAA5
AAA6
AAA7
AAA8
AAA9
AAA10
AAA11
AAA12
AAA13
AAA14
AAA15
AAA16
AAA17
AAA18
AAA19
AAA20
AAA21
AAA22
AAA23
AAA24
AAA25
AAA26
AAA27
AAA28
AAA29
AAA30
AAA31
AAA32
AAA33
AAA34
AAA35
AAA36
AAA37
AAA38
AAA39
AAA40
AAA41
AAA42
AAA43
AAA44
AAA45
AAA46
AAA47
AAA48
AAA49
AAA50
AAA51
AAA52
AAA53
AAA54
AAA55
AAA56
AAA57
AAA58
AAA59
AAA60
AAA61
AAA62
AAA63
AAA64
AAA65
AAA66
AAA67
AAA68
AAA69
AAA70
AAA71
AAA72
AAA73
AAA74
AAA75
AAA76
AAA77
AAA78
AAA79
AAA80
AAA81
AAA82
AAA83
AAA84
AAA85
AAA86
AAA87
AAA88
AAA89
AAA90
AAA91
AAA92
AAA93
AAA94
AAA95
AAA96
AAA97
AAA98
AAA99
AAA100
AAA101
AAA102
AAA103';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
// Print the entire match result
var_dump($matches);
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 PHP, please visit: http://php.net/manual/en/ref.pcre.php