$re = '/(?<=\$)(\d(?:,?\d)*(?:\.\d\d)?)(?:\s*-\s*\$?(\d(?:,?\d)*(?:\.\d\d)?))?\s+per\s+(?:year|month|day|hour)/m';
$str = 'ex_1 <- "starting salary: $18 per hour", "retention bonus $500", "signing bonus $150", "our nannies/babysitters choose the days they can work 8am-6pm and are in a “standby” status on their days on"
ex_2 <- pay: $65,000.00 - $95,623.00 per year
ex_3 <- "tuition assistance (100% coverage for select degrees or up to $5,250/year)", "pay: $16.25 - $16.50 per hour"
ex_4 <- salary: $22.00 - 30.00 per hour
ex_5 <- $50,000.00 per year
ex_6 <- $15.00 per hour
ex_7 <- character(0)
ex_8 <- "salary: $22.00 - $30.00 per hour", "pay: $47,257.00 - $49,838.00 per year")
What I would like to extract:
ex_1 <- 18 per hour
ex_2 <- 65,000.00 - 95,623.00 per year
ex_3 <- 16.25 - 16.50 per hour
ex_4 <- 22.00 - 30.00 per hour
ex_5 <- 50,000.00 per year
ex_6 <- 15 per hour
ex_7 <- ""
ex_8 <- 22.00 - 30.00 per hour 47,257.00 - 49,838.00 per year
';
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