我正在尝试使用preg_match匹配正则表达式中的2个单词。 这是我的声明的简化版本,下面是实际代码。 当我在表达式中使用2个组时,表达式不起作用。请帮忙。
如果是preg_match(字符串或字符串)和(字符串或字符串){ 做这个 }
$subject = 'over £200 and under £300';
$minPrice = 0;
$maxPrice = 10000;
if (preg_match_all( '#£.*?([0-9]+)#i', $subject, $priceMatches)) {
foreach ($priceMatches as $price) {}
if (preg_match('/(over|above)(under|below|beneath)/i',$subject)) {
$minPrice = $price[0];
$maxPrice = $price[1];
$priceOrder = "#!No=0&Nf=P_Price|BTWN+".$minPrice."+".$maxPrice."&N=&side=&Ns=P-SYSTEM_Price_Revenue|1&perPage=12";
echo 'MIN PRICE ' . $minPrice . "\n";
echo 'MAX PRICE ' . $maxPrice . "\n";
} else {
echo "no e found";
}
} else {
echo "no e found";
}
>
答案 0 :(得分:0)
如果您始终匹配的顺序始终相同,则只需将正则表达式更改为:
/(over|above).*(under|below|beneath)/i
这将允许两个单词之间的任何内容。以前,你的正则表达式期望这些单词是背靠背的(事实并非如此)。