正则替换:
////把a?替换成一个A
//string str = "hiaaa你aa好aaa啊aa";
//str = Regex.Replace(str, "a+", "A");
//Console.WriteLine(str);
////把引号替换成中括号,这里需要使用组
////如果想要输出$,则需要使用$$
//string str = "hello 'welcome' to 'china' 'yy' 'lzs' 'xss'";
//str = Regex.Replace(str, "'(.+?)'", "[$1]$$");
//Console.WriteLine(str);
////隐藏手机号
//string str = "yy18019999999,ly18019999998,xss18019999997";
//str = Regex.Replace(str, "([1-9][0-9]{2})[0-9]{4}([0-9]{4})", "$1****$2");
//Console.WriteLine(str);
//隐藏邮箱,邮箱名称有几位替换成几个*
//这里是直接全部替换成了3个*,想要几个字符替换成几个*需要穿委托参数
string str = "邮箱[email protected],邮箱[email protected],邮箱[email protected]";
//禁止匹配汉字
str = Regex.Replace(str, @"\w+(@\w+.\w+)", "***$1", RegexOptions.ECMAScript);
Console.WriteLine(str);
//单词边界\b
////使用单词边界替换固定的单词
////把come替换成go
//string str = "welcome to china, come on!!";
////这样会把welcome中的come也给替换掉
////str = Regex.Replace(str, "come", "go");
////使用单词边界来判断
////单词边界是个断言(还有^$也是断言),只进行判断不进行匹配
////把光标定位到一个任意位置,这个光标的位置就是一个边界,如果这个光标的一边是字母,一边不是则这个光标就可以看做是个单词的边界(这是我自己的理解,可能这么解释并不合适)
////单词边界只进行判断,并不进行匹配
////什么是“单词”,正则匹配结果为[a-zA-Z0-9_]
//str = Regex.Replace(str, @"\bcome\b", "go");
//Console.WriteLine(str);
////提取三个字母组成的单词
//string str = "hi,how are you,welcome to china,yes!!";
//MatchCollection mats = Regex.Matches(str, @"\b[a-zA-Z]{3}\b", RegexOptions.IgnoreCase);
//foreach (Match item in mats)
//{
// Console.WriteLine(item.Value);
//}
////提取三个字母组成的单词
//string str = "## # ### # ### ##### ## ### ####";
////这里输出为空,匹配不到任何结果,因为#并不是单词,所以单词边界无法对其进行判断
////MatchCollection mats = Regex.Matches(str, @"\b###\b");
////这里匹配多了,四个字符和五个字符的也被匹配出来了
////MatchCollection mats = Regex.Matches(str, "###");
////这里使用环视,正向环视和逆向环视
//MatchCollection mats = Regex.Matches(str, @"(?<= )###(?= )");
//foreach (Match item in mats)
//{
// Console.WriteLine(item.Value);
//}
////引用分组
////叠词替换
//string str = "我我我我我嘻嘻嘻嘻嘻哈哈哈哈哈哈你你你你你";
////这里使用分组(),之后的\1表示分组信息,\1表示第一组,\2表示第二组
////()()() \1\2\3
////匹配任意的字符,然后把这个字符分组,之后分组的信息继续出现一次或多次
//str = Regex.Replace(str, @"(.)\1+", "$1");
//Console.WriteLine(str);
////时间格式替换
////将日期格式mm/dd/yyyy替换成 yyyy-mm-dd
//string str = "我的生日是06/27/2015小硕硕的生日是11/05/2016";
//str = Regex.Replace(str, @"(\d{2})/(\d{2})/(\d{4})", "$3-$1-$2", RegexOptions.ECMAScript);
//Console.WriteLine(str);
////敏感词过滤
////用户输入的字符串
//string str = "";
////保存需要审核的敏感词
//StringBuilder sbMode = new StringBuilder();
//sbMode.Append("安定片|网络推广|办理证件|办证");
////保存绝对不允许发布的敏感词
//StringBuilder sbBanned = new StringBuilder();
//sbBanned.Append("手枪|假币|冰毒|吸毒|赌博|博彩|枪手");
////验证是否有禁止发送的关键字
//if (Regex.IsMatch(str, sbBanned.ToString()))
//{
// //禁止发帖
//}
//else if (Regex.IsMatch(str, sbMode.ToString()))
//{
// //需要审核
//}
//else
//{
// //直接通过思密达
//}