Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 正则表达式匹配两个字符串相同的开始字符串和结束字符串_Php_Regex_String - Fatal编程技术网

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

Php 正则表达式匹配两个字符串相同的开始字符串和结束字符串,php,regex,string,Php,Regex,String,我有以下代码: <?php $subject="something"; $pattern="something"; If(preg_match($pattern,$subject)){ echo "Match is found"; }else{ echo "Match is not found"; } ?> 要点是以apple开头,以apple结尾的字符串 那么模式应该是什么呢 找到匹配项 是输出 我知道这种模

我有以下代码:

<?php
    $subject="something";
    $pattern="something";
    If(preg_match($pattern,$subject)){
        echo "Match is found";
    }else{
        echo "Match is not found";
    }
?>
要点是以
apple
开头,以
apple
结尾的字符串

那么模式应该是什么呢

找到匹配项

是输出

我知道这种模式是可以改变的

"/^apple.*apple$/"
但我不想重复苹果这个词。

你只需要一个苹果。尝试:


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

您不想重复子字符串
“apple”
?把它放在一个变量中:
$word=“apple”
,或者使用
sprintf
来构建您的模式。这不是答案,因为我必须重复$word variable我想您需要这样的内容:^(\w+)\b.*\b\1$基本上,从一个单词(\w+)开始,然后是一个单词边界。(\w+)中的内容必须在结尾,这是\1我不确定php中的\1语法是什么,这是针对Python的。也许1美元?我觉得OP需要
“/^(苹果)。*(?1)$/s”
(因为我不想重复同一个词苹果。)@chris85:除非
苹果
实际上是其他模式的占位符,例如
。但不是很确定,这个问题很奇怪。我只是不觉得有什么问题。以主要基于意见的方式关闭它。
"/^apple.*apple$/"
/^(\w+).*(\1)$/