正则表达式匹配两个字符串相同的开始和结束字符串

时间:2017-06-09 17:04:44

标签: php regex string

我有以下代码:

<?php
    $subject="something";
    $pattern="something";
    If(preg_match($pattern,$subject)){
        echo "Match is found";
    }else{
        echo "Match is not found";
    }
?>

如果我有

$subject="apple is fruit and I love apple";

主要观点是以apple开头并以apple

结尾的字符串

然后该模式应该是什么

match is found

是输出。

我知道模式可以是

"/^apple.*apple$/"

但我不想重复苹果这个词。

1 个答案:

答案 0 :(得分:0)

你只需要一个backreference。尝试:

/^(\w+).*(\1)$/

(\w+)捕获第一个单词,无论它是什么,而不必指定&#34; apple&#34;就像这个词。反向引用\1告诉正则表达式解析器替换第一个捕获组中捕获的内容。使用backtracking的魔力,正则表达式解析器将找出如何正确匹配输入符号以满足反向引用。