#regex #string
#регулярное выражение #строка
Вопрос:
Мне нужно несколько строк кода, чтобы удалить все восклицательные знаки («!»), начиная с конца предложения. Код должен достичь следующего:
"Hi!" --> "Hi"
"Hi!!!" --> "Hi"
"!Hi") --> "!Hi"
"Hi! Hi!") --> "Hi! Hi"
Однако я пытался использовать регулярное выражение (отрицательный прогноз), но безуспешно:
/(?!^)!/g
Краткое объяснение решения было бы весьма полезно. Спасибо!
Ответ №1:
Вам не нужен предварительный просмотр. Просто сопоставьте восклицательные знаки в конце и замените их пустой строкой. В PHP это:
$string = preg_replace('/! $/', '', $string);
Ответ №2:
Вы должны использовать $
якорь, который отмечает конец строки:
/! $/gm
m
Флаг присутствует на случай, если у вас многострочная строка.
Ответ №3:
Я даю вам решение, которое я реализовал в javascript. Я не знаю, какой язык вы используете, но в любом случае логика остается прежней.
var text = "!Hi! Hi!!";
var i=text.length - 1;
while(text[i] == "!"){
i--;
}
finalText = text.substring(0,i 1);
console.log(finalText);
Output: !Hi! Hi
Вы можете использовать ту же логику для реализации на используемом вами языке программирования. Если вы хотите использовать регулярное выражение, то решение, упомянутое @Barmar выше, будет работать отлично!
Ответ №4:
def remove(s):
return s[:-1] if s.endswith('!') else s
Это должно быть хорошо
Комментарии:
1. Это удаляет только последний! в строке не учитывается, есть ли их несколько!! в конце строки.