мне нужен совет по этому сниппетаRegEx: сопоставление и заменить ABC в "AB ABC D"
$text = preg_replace('|(A.*)?A(.*)C|', '$1foo$2bar', $text);
Это будет соответствовать ABC в "AB ABC D" и замените его на "AB fooBbar D"; так как вы можете видеть, что это совпадает с частью «AB» в начале, и я должен повторить в заменяющей строке 1 доллар, чтобы не потерять ее.
Это лучший способ получить такой результат?
Есть ли флаг X такое, что
$text = preg_replace('|A(.*)C|X', 'foo$1bar', $text);
производит один и тот же результат?
Я надеюсь, что был ясен
Спасибо!
РЕДАКТИРОВАТЬ: Рассмотрим A, B, C, как атомных цепочек произвольных символов, они могут содержать пробелы, а
Кроме того, представлен пример на самом деле багги, так как он соответствует только второй «ABC» в «ABC ABC».
EDIT2: Извините, я, вероятно, объяснил эту проблему очень плохо. Дело в том, что я хочу, чтобы соответствовать независимо между двумя строки A, C, так что нет подстроки А в матче
Снова благодаря
В следующий раз, вы должны придумать реальный пример. :-) Приведенные примеры «ABC» не идеальны (как вы видели). – Tomalak
Какой должен быть желаемый результат для «A AABCC C»? –
@NoWhereMan: Можете ли вы объяснить, почему простой preg_replace ('| A (B) C |', 'foo $ 1bar', $ text) не работает? –