初步接触正则表达式
在典型的搜索和替换操作中,必须提供要查找的确切文字。这种技术对于静态文本中的简单搜索和替换任务可能足够了,但是由于它缺乏灵活性,因此在搜索动态文本时就有困难了,甚至是不可能的。
使用正则表达式,就可以:
1.测试字符串的某个模式。例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或一个信用卡号码模式。这称为数据有效性验证。
2.替换文本。可以在文档中使用一个正则表达式来标识特定文字,然后可以全部将其删除,或者替换为别的文字。
3.根据模式匹配从字符串中提取一个子字符串。可以用来在文本或输入字段中查找特定文字。
下面是3个简单的例子用来实现上面的3种功能:(c#)
例1
bool StringMatch(string _InPutStr)// 检测字符串是否以"a"开头,是返回"True",否返回"false"
{
return Regex.IsMatch(_InPutStr, @"^a");
}
解释:"^"表示匹配内容必须出现在字符串的开头
例2
string StringReplace(string _InPutStr)//将aa/bb/cc的时间格式替换为bb-aa-cc的时间格式
{
return Regex.Replace(_InPutStr, @"\b(?<month>\d{1,2})/(?<day>\d{1,2})/(?<year>\d{2,4})\b", "${day}-${month}-${year}");
}
解释:(?<month>\d{1,2})意思将匹配的字符串捕获到名为month的组内。\d{1,2}指匹配标准为1-2位数字。(?<day>\d{1,2}),(?<year>\d{2,4})同理.
${month}获得上面构造的名为month的分组匹配的信息,${day},${year}同理。
\b指定匹配必须出现在字母数字和非字母数字的边界上,意思是出现在空格分隔的单词中第一个或最后一个字符上。
例3
string Extension(String _InPutStr)
{
return Regex.Match(_InPutStr, @"\d{3}").ToString();//返回首个连续3个且只有3个的十进制数字组成的字符串。如:a123bcd 返回123
}
解释:\d表示匹配十进制数字{3}指匹配数量为3位,你也可以指定匹配数的范围。如{2,3}指匹配2至3位
以上3个例子只是说明正则表达式运用的一些基本方式,至于语法,各位还是自己看书更清楚些。


浙公网安备 33010602011771号