需要正则表达式来删除一个且只有一个s

时间:2011-09-19 02:45:40

标签: c# .net regex

需要正则表达式来删除字母s

我希望正则表达式只有在它是最后一个字符并且只找到一个实例时才删除它

所以“男孩”这个词会成为“男孩”

和单词“process”将保持不变,因为有多个“s”并且应该不区分大小写。

请帮忙 感谢


仅适用于单个单词。 我在下面尝试了这个代码并且不能用于句子。

string str = "The boys in the student's class didn't understand  the process.";
str = System.Text.RegularExpressions.Regex.Replace(str, "([^s])s$", "$1");
Console.WriteLine(str);
Console.ReadLine();

2 个答案:

答案 0 :(得分:3)

我相信你需要的是一个零宽度的负面后瞻断言; Perl风格的正则表达式将是这样的:

$line =~ s/(?<!s)s\b//gi;

这意味着“删除单个'字符,如果它是单词的最后一个字符(即空白字符是下一个字符),如果前面的字符不是's',则所有不区分大小写。”< / p>

use strict;
use warnings;

my $line = "The boys in the student's class didn't understand the process.";

$line =~ s/(?<!s)s\b//gi;

print "$line\n";
收益率:“学生班上的男孩不理解这个过程。”

答案 1 :(得分:0)

这应该有效:

/([^s])s$/\1/

这就是说C#是:

Regex.Replace(str, "([^s])s$", "$1")