我需要几行代码才能从句子末尾开始删除所有感叹号("!")。代码应该实现以下目的:
"Hi!" --> "Hi"
"Hi!!!" --> "Hi"
"!Hi") --> "!Hi"
"Hi! Hi!") --> "Hi! Hi"
我尝试过使用RegEx(负向前瞻)但是没有成功:
/(?!^)!/g
非常感谢对该解决方案的简短解释。谢谢!
答案 0 :(得分:2)
您应该使用$
锚点,它标记字符串的结尾:
/!+$/gm
如果您有多行字符串,则会出现m
标记。
答案 1 :(得分:2)
你不需要前瞻。只需匹配末尾的感叹号,并用空字符串替换它们。在PHP中,这是:
$string = preg_replace('/!+$/', '', $string);
答案 2 :(得分:0)
我正在为您提供我在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上面提到的解决方案将完美运行!