Как удалить конкретное слово из начала строки? - PullRequest
1 голос
/ 25 сентября 2019

Вот несколько примеров:

meaning hello
meaning
hello meaning
whatever

Я хочу удалить слово meaning, если оно находится в начале предложения.Итак, вот ожидаемый результат для каждого из этих выражений:

hello
meaning
hello meaning
whatever

Примечание 1: Если все выражение (независимо от окруженных пробелов), то я хочу сохранить его.

Примечание2: Все вышеприведенные выражения разделены.Поэтому примите их как разные записи.


Вот что я пробовал: ^\s*meaning\s+ ( demo ) - проблема в том, что он даже удаляет meaning.

Ответы [ 4 ]

3 голосов
/ 25 сентября 2019

Если вы хотите удалить meaning при появлении в начале ввода, возможно с предваряющим пробелом, когда никакие другие термины не следуют, тогда вы можете использовать положительный прогноз:

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

Это утверждаетчто сопоставляется только meaning, и за ним также следует любой другой текст без пробелов в той же строке.

Демо

3 голосов
/ 25 сентября 2019

Ваша проблема в том, что \s+ соответствует символам новой строки в конце строки, которая содержит только meaning.Вместо этого вместо [ \t]+:

^\s*meaning[ \t]+

Демо

1 голос
/ 25 сентября 2019

Просто опубликовать 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;

Надеюсь, это послужит вам идеей.

0 голосов
/ 25 сентября 2019

Вы очень близки :)

Попробуйте ^\s*meaning(?= +\S)

Дополнительные (?= +\S) в конце гарантируют, что ниже будут пробелы и некоторые непробельные символы.

Демо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...