Как удалить последнюю конкретную строку с помощью регулярных выражений? - PullRequest
0 голосов
/ 02 марта 2012

Привет, у меня есть строка, как показано ниже,

$aa = "Ability: N/S,Session: Session #2: Tues June 14th - Fri June 24th (9-2:00PM),Time: 10:30am,cname: karthi";

$aa = "Ability: N/S,Session: Session #1: Tues May 31st - Fri June 10th (1-5:30PM),Time: #1 only: 1:30pm,cname: ravi";

$aa = "Ability: N/S,Session: Session #1: Tues May 31st - Fri June 10th (1-5:30PM),Time: #1 only: 1am,cname: mathi";

Мне нужно написать одно регулярное выражение для удаления конкретной строки из ", cname:" до последнего.Мне нужен вывод, как,

$aa = "Ability: N/S,Session: Session #2: Tues June 14th - Fri June 24th (9-2:00PM),Time: 10:30am";

    $aa = "Ability: N/S,Session: Session #1: Tues May 31st - Fri June 10th (1-5:30PM),Time: #1 only: 1:30pm";

    $aa = "Ability: N/S,Session: Session #1: Tues May 31st - Fri June 10th (1-5:30PM),Time: #1 only: 1am";

Как я могу сделать это в регулярном выражении?

Ответы [ 4 ]

1 голос
/ 02 марта 2012

Попробуйте

/,cname:.*$/

и замените на пустую строку.

$result = preg_replace('/,cname:.*$/', '', $aa);

См. здесь на Regexr

1 голос
/ 02 марта 2012

Вам не нужно регулярное выражение для этого. Вы можете использовать strpos () , чтобы найти индекс ', cname:', а затем substr () до этого индекса.

<?php

$aa = "Ability: N/S,Session: Session #1: Tues May 31st - Fri June 10th (1-5:30PM),Time: #1 only: 1am,cname: mathi";
$pos = strpos($aa, ',cname:');
$bb = substr($aa, 0, $pos);
echo $bb, "\n";

но если по какой-либо причине вы настаиваете на использовании регулярных выражений для этого, вы захотите использовать preg_replace () :

<?php

$aa = "Ability: N/S,Session: Session #1: Tues May 31st - Fri June 10th (1-5:30PM),Time: #1 only: 1am,cname: mathi";
$bb = preg_replace('#,cname:.*$#', '', $aa);
echo $bb, "\n";

и если вы не хотите изменять строку, вы можете использовать preg_match () :

<?php

$aa = "Ability: N/S,Session: Session #1: Tues May 31st - Fri June 10th (1-5:30PM),Time: #1 only: 1am,cname: mathi";
if (preg_match('#^(.+),cname:.*$#', $aa, $match)) {
    echo $match[1], "\n";
}
0 голосов
/ 02 марта 2012

Если у вас более одного ,cname:... и вы хотите удалить последний, используйте это:

$aa= preg_replace('/,cname:.*?$/', '', $aa);
0 голосов
/ 02 марта 2012
/^(.*),cname:.*;$/

Группа 1 ($ 1), сгенерированная этим регулярным выражением, даст вам желаемый результат.

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