匹配完整单词中字符串的开头

时间:2016-09-17 07:22:03

标签: php

我在这里使用了startsWith()函数startsWith() and endsWith() functions in PHP

但我希望它只匹配完整的单词。

目前它将匹配以下内容:

hi
high
hiho

但我希望它只匹配" hi"而不是其他两个单词,如果输入是:

hi there

2 个答案:

答案 0 :(得分:2)

您可以将它与此正则表达式匹配:/ ^ hi $ | ^ hi \ s | \ shi \ s | \ shi $ /

$test = ['hi', 'hi there', 'high', 'hiho'];
$pattern = '/^hi$|^hi\s|\shi\s|\shi$/';
$matches = [];

foreach ($test as $t) {
    var_dump($t);
    preg_match($pattern, $t, $matches);
    var_dump($matches);
}

零件解释:

  • ^ hi $ - 你的刺痛是“嗨”
  • ^ hi \ s - 你的字符串以hi开头:“hi”
  • \ shi \ s - 你的字符串中有一个“hi”
  • \ shi $ - 您的字符串以“hi”结尾

这些部分用管道“|”粘在一起,在正则表达式中表示“或”,所以整个表达式匹配任何一个部分

答案 1 :(得分:0)

如果您针对hi字测试整个文字,请尝试以下操作:

<?php    
preg_match_all('@hi\s@i',
        "hi me
        hi there
        high
        highlander
        historic
        hire", 
$matches);

var_dump($matches);

enter image description here

测试 - 在此处修改:https://regex101.com/r/tV3jR6/1