正则表达式结合RegexBuddy工具
正则表达式:又称为规则表达式,适用于进行文本匹配的工具
1.简单的正则表达式
例:him,history,high ,hi在这个字符串匹配出hi
正则表达式:hi
若要精确的匹配出hi正则表达式:\bhi\b
\b是正则表达式规定的一个特殊代码(元字符),单词的开头或结尾,也就是单词的分界处
1.元字符的讲解
代码 说明
. 匹配除换行符以外的任意字符
\w 匹配字母数字下划线以及汉字
\s 匹配任意的空白符
\d 匹配数字
\b 匹配单词开始与结束的字符
^ 匹配字符串的开始的字符
$ 匹配字符串的结束的字符
=============================================
\W 匹配任意不是字母数字下划线以及汉字
\S 匹配任意不是的空白符
\D 匹配非数字
\B 匹配不是单词单词开始与结束
[^x] 匹配除了x以外的任意字符
[^aeiou] 匹配除了aeiou这几个字母以外的任意字符
2.字符转义
字符转义‘\’:如果你想查找元字符本身的话,比如你查找.,或者*,就出现了问题:没法制定它们,因为他们会被解释成其他的意思。这时你就必须使用\来取消这些字符的特殊意义。因此,应该使用\.和\*。当然要查找本身,也德用\\
3.常用限定符
代码 说明
* 重复零次或更多次
+ 重复一次或更多次
? 重复零次或一次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次
实例:
public ActionResult RegexCshaarp()
{
string str = "<img οnlοad=\"AutoResizeImage(200,200,this)\"src=\"/Document/Title/Temp/2017-12-114bc5.png\" >" +
"<img οnlοad=\"AutoResizeImage(200,200,this)\"src=\"/Document/Title/Temp/2017-12-114bc5.png\" >" +
"<img οnlοad=\"AutoResizeImage(200,200,this)\"src=\"/Document/Title/Temp/2017-12-114bc5.png\" >";
//实例化
Regex regex = new Regex("onload.+?(?=src)");
//IsMatch:指定的正则表达式在指定的输入字符串中是否找到了匹配项。
//如果正则表达式找到匹配项,则为true否则为false。
bool blReg = regex.IsMatch(str);
//Match:指定的正则表达式的第一个匹配项
//返回"一个"包含有关匹配的信息的对象
Match match = regex.Match(str);
string strl = match.Value;
//value:返回结构通过匹配捕获的子字符串
// MatchCollection表示通过以迭代方式将正则表达式模式
//应用于输入字符串所找到的"成功匹配"的集合
MatchCollection matchCol = regex.Matches(str);
for(int i=0;i<matchCol.Count;i++)//通过循环获取每一个匹配对象
{
string valuel = matchCol[i].Value;
}
//第二种写法:
bool blRG1 = Regex.IsMatch(str, "(?<=Document/Title/Temp/).+?(?=\")");
Match match1 = Regex.Match(str, "(?<=Document/Title/Temp/).+?(?=\")");
MatchCollection matchCol1 = Regex.Matches(str, "(?<=Document/Title/Temp/).+?(?=\")");
for(int i=0;i<matchCol1.Count;i++)//通过循环获取每一个匹配对象
{
Match ma = matchCol1[i];
string value1 = ma.Value;
}
//Replace:替换与指定正则表达式匹配的所有字符串
string str2 = Regex.Replace(str, "onload.+?(?=src)", "~~~~");
return Content("");
}
}
}