$re = '/^(?<location>[A-Za-z]+)[-_][A-Z]{1,2}\d/m';
$str = 'BMD-R1
BMD-R2
BTN-R1
BTN-R1-SW
BTN-R2
BTN-R2-SW
CentralOCS-R1
CentralOCS-R1-SW
CentralOCS-R2
CentralOCS-R2-SW
CentralOCS-SW3
CentralOCS-SW4
CLJ-R1
CLJ-R2
CS-HPOV-MLS1
CS-HPOV-MLS2
CTN-R1
CTN-R2
EKV-OTC-MLS1
GOS-R1
GOS-R2
GVL-R1
GVL-R2
ING-R1
LAW-R1
LCS-R1
LCS-R2
LIV-R1
Mascot_R1
Mascot_R2
Mascot_SW1
Mascot_SW2
Mascot_SW3
MST-R1
MST-R2
MTV-R1
MTV-R2
OSS-FW1 (FO)
OSS-FW1 (Pri)
PEN-R1
PEN-R2
Pitt_R1
ROC-FW1
ROC-HPDM-SW1
ROC-PUB-MLS1
ROC-PUB-MLS2
ROC-RCS-SW
SM-ER-SW1
SM-ER-SW2
SM-FW1 (FO)
SM-FW1 (Pri)
SM-PUB-R1
SM-PUB-R1-SW
SM-PUB-R2
SM-PUB-R2-SW
SM-RCS-R1
SM-RCS-R2
SM-RCS-SW1
SM-RCS-SW2
ST-ER-SW1
ST-ER-SW2
ST-FW1 (FO)
ST-FW1 (Pri)
STM-R1
STM-R2
ST-OSS-MAIN-R1
ST-OSS-MAIN-R2
ST-OSS-PUB-R1
ST-OSS-PUB-R1-SW
ST-OSS-PUB-R2
ST-OSS-PUB-R2-SW
ST-PUB-MLS1
ST-PUB-MLS2
ST-PUB-R1
ST-PUB-R2
ST-RCS-R1
ST-RCS-R2
ST-RCS-SW1
ST-RCS-SW2
TES-SW1
Waterfall_SW1
Waterfall_SW2
Waterfall-R1
Waterfall-R2
WolloFW_R1
WolloFW_R2
WolloFW_SW
WYG-R1
WYG-R2
Wynyard_R1
Wynyard_R2
';
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