如何从字符串开头删除特定单词?

时间:2019-09-25 05:53:44

标签: php regex

以下是一些示例:

meaning hello
meaning
hello meaning
whatever

如果单词meaning在句子的开头,我想删除它。因此,这是每个表达式的预期结果:

hello
meaning
hello meaning
whatever

注1::如果整个表达式(无论空格如何),我都希望保留。

注意2:上面的那些表达式都是分开的。因此,假设它们是不同的条目。


这是我尝试的方法:^\s*meaning\s+demo)-它的问题是它甚至删除了meaning

4 个答案:

答案 0 :(得分:3)

您的问题是\s+与仅包含meaning的行末尾的换行符匹配。改为将其更改为[ \t]+

^\s*meaning[ \t]+

Demo

答案 1 :(得分:3)

如果您想在输入的开头出现meaning时删除它(可能以空格开头,并且没有其他术语),那么可以使用正向查找:

^\s*meaning\b(?= .*\S)

这断言只有meaning是匹配的,并且同一行上还有其他非空白文本。

Demo

答案 2 :(得分:1)

发布4分钟的解决方案比其他任何方法都快:)

$data_0 = 'hello meaning';
$data_1 = 'meaning hello';

$dToArray = explode(' ', $data_0);
$string = '';
$counter = count($dToArray);

for($i = 0; $i < $counter; $i++) {

    if (strtolower($dToArray[$i]) === 'meaning' && $i === 0){
        continue;
    }
    $string .= $dToArray[$i] . ' ';
}
echo $string;

我希望这会为您触发一个主意。

答案 3 :(得分:0)

您非常接近:)

尝试^\s*meaning(?= +\S)

最后的(?= +\S)将确保后面是空格和一些非空白字符。

Demo