Регулярное выражение «1 месяц, — $ 7,50» для замены «- $ 7,50» на «-10%»

#php #regex

#php #регулярное выражение

Вопрос:

Это моя попытка, но она не работает. В наши дни я так устал от регулярных выражений, что понятия не имею, что с ним не так. Любая помощь?

 $pattern = '/-$[.*]$/';
  

Комментарии:

1. Замените квадратные скобки круглыми скобками.

Ответ №1:

Вам нужно поместить * вне [] (или, что еще лучше, использовать ).

Попробуйте '/-$[0-9.] /' :

 $pattern = '/-$[0-9.] /';
  

Или, если — $ 7.50 всегда будет в конце строки:

 $pattern = '/-$[0-9.] $/';
  

Комментарии:

1. @Smamatti отредактировано, чтобы удалить последний $. Было ли это указано в вопросе?

2. Извините. Я просто подумал, что решение должно быть более общим. Это неправильно, потому что это не было указано таким образом?

3. @Smamatti В этом нет ничего плохого, я просто подумал, что на секунду ослеп :).

Ответ №2:

 $pattern = '/-$(.*)$/';
  

Если я правильно понял. Число будет доступно как «$ 1» в строке замены

Ответ №3:

Попробуйте с:

 $pattern = '/-$d .d /';
  

Оно будет соответствовать знаку минус (если вы измените его на -? , минус будет необязательным), цифрам, точке и цифрам после точки.

Ответ №4:

 <?php
    $string = 'Wow! -$7.50 now!';
    $pattern = '/-$(d ).(d )/';

    $replacement = '-10%';
    echo preg_replace($pattern, $replacement, $string);
?>
  

Комментарии:

1. Поместите знак минуса в выражение.