删除句子末尾的所有感叹号

时间:2016-10-13 06:03:29

标签: regex string

我需要几行代码才能从句子末尾开始删除所有感叹号("!")。代码应该实现以下目的:

"Hi!" --> "Hi"
"Hi!!!" --> "Hi"
"!Hi") --> "!Hi"
"Hi! Hi!") --> "Hi! Hi"

我尝试过使用RegEx(负向前瞻)但是没有成功:

/(?!^)!/g

非常感谢对该解决方案的简短解释。谢谢!

3 个答案:

答案 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上面提到的解决方案将完美运行!