нужна помощь с Preg_replace Регулярные выражения - PullRequest
0 голосов
/ 12 февраля 2010

эти слова1 и слово2 заключены в скобки

хочу удалить всю строку зависит от слова2

[word1] something-line-text [word2] some text again

хотите заменить один текст другим, зависит от word2

[word1] something-line-text [word2] some text again

into

REPLCACEDTEXT something-line-text some text again

some line text (something/something)

into

(something/something) some line text

1 Ответ

0 голосов
/ 12 февраля 2010

Я не на 100% уверен, что вы хотите, но при этом будут искать [word1] и [word2] и удалять их, только если оба находятся в строке:

$line = preg_replace('/word1(.*)word2/', '$1', $line);

Этот метод может соответствовать частичным словам, и у вас могут остаться лишние пробелы. Чуть лучше было бы:

$line = preg_replace('/\s?word1\b(.*)\s?word2\b/', '$1', $line);

Это гарантирует, что они сопоставляются как целые слова, используя границы слов и пробелы. Я использую пробелы на одной стороне, так что дополнительное пространство используется. Если вас это не волнует, просто используйте \b с обеих сторон каждого слова.

Второй случай, перемещает первую фразу в скобках в начало строки:

$line = preg_replace('/(.*)(\(.*?\))/', '$2 $1', $line);

Изменить:

После просмотра вашего примера, я думаю, вы хотите:

$line = preg_replace('/^\[Scene\].*/', '', $line);

$line = preg_replace('/\[\.*?\]\s+(.*)(\[.*?\])/', '$2 $1');

$line = preg_replace('/(.*)\s+(\(.*?\))/', '$2 $1');
...