【发布时间】:2014-06-11 04:39:44
【问题描述】:
我正在尝试为几个单词的所有模式匹配测试一个字符串,这些单词是单词的开头。如果不是所有模式都匹配,我想将查询视为 False。单词测试的开始是有效的,但是我得到了重复的匹配项,我认为这让我感到惊讶,一旦找到一个单词的匹配项,它就不会再测试那个单词了。也许我需要以某种方式将测试限制为一场比赛。
我想象如果我测试 3 个单词,那么成功的测试将返回 3。
从示例中可以看出,返回值具有误导性。我得到一个正值,它大于我正在测试的单词数。在不匹配组的情况下,由于某些单词的多次匹配,我仍然得到一个高于要测试的单词数的值。
我想我还没有完全理解某些东西,或者我需要强制一个 AND 情况。
我已经用谷歌搜索了答案,但似乎没有一个是针对我的问题的。
$image = 'After A!!BC DEF hello bugggy bad Sled bob bobert robob Triumph 2000 Roadster clearing bobby Sledmere ^ August 2014 ^ error';
$result = preg_match_all($query, $image, $matches);
$query = '#\b(bob|bug|sled)#i'; // ALL MATCH
Return Value 6 [ bob x 3, bug x 1, sled x 1]
$query = '#\b(bob|bug|led)#i'; // Two matches 'led' fails
Return Value 4 [ bob x 3, bug x 1, led x 0]
【问题讨论】:
-
如果我理解得很好,您想检查所有单词是否只出现一次?
-
不,我想知道模式中的所有单词至少匹配一次。
标签: php regex preg-match-all