- 边界
//\b指定单词的边界
//\B不匹配一个单词边界
str = @"this cat scattered his food all over the room";
pattern = @"\bcat\b";
/* ^用来定义字符串开头
* $用来定义字符串结尾
* ^紧跟在左方括号【的后面时,表示取非
* ^如果放在字符集的外面并位于一个模式的开头,将匹配字符串的开头
*/
str= @"
<?xml version='1.0' encoding='utf - 8' ?>
< sqlMap namespace='TFranSummaryItemMap' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns='http://ibatis.apache.org/mapping'>";
pattern = @"^\s*<\?xml.*\?>";
/*如果没有(?m)不匹配
*否则三个注释都将匹配
*/
str = @" sdfewgo230r
// Make love
2342390
// init
weuhfsdoi
// Done";
pattern = @"(?m)^\s*//.*$";
2.
str = @"pinging hong.com [192.168.1.10]";
//1.不一定合法如:999.999.999.999
pattern = @"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}";
//2.不一定合法如:000.000.000.000
//使用子表达式(\d{1,3}\.)
pattern = @"(\d{1,3}\.){3}\d{1,3}";
//3.合法
pattern = @"(((\d{1,2})|(1\d{1,2})|(2[0-4]\d)|(25[0-5]))\.){3}((\d{1,2})|(1\d{1,2})|(2[0-4]\d)|(25[0-5])";
str = @"
Date1:1999,
Date2:2020";
//结果:19 2020
//解释为19或者20\d{2}
pattern = @"19|20\d{2}";
//OK
pattern = @"(19|20)\d{2}";
3.回溯引用匹配
/*1.回溯引用只能用来引用模式里的字表达式(用(和)括起来的正则表达式片段)
*2.回溯引用通常从1开始匹配\1,\2许多实现里\0代表整个正则表达式
*/
//回溯引用匹配
str = @"<BODY>
<h1>dsfiowe23r</h1>
jfp3r0-43f3jdf
<h2>90349f3qjoq</h3>
</BODY>";
//错误结果:<h1>dsfiowe23r</h1>
//< h2 > 90349f3qjoq </ h3 >
pattern = @"<[hH][1-6]>.*?</[hH][1-6]>";
//正确结果:<h1>dsfiowe23r</h1>
pattern = @"<[hH]([1-6])>.*?</[hH]\1>";
str = @"this fo fo text, should be and and";
/*[ ]+匹配一个或多个空格
* \w+匹配一个或多个字母数字字符
* [ ]匹配随后的空格
* \1这是一个回溯引用,它代表者模式里的第一个字表达式
*/
pattern = @"[ ]+(\w+)[ ]+\1";
str = @"313-555-1244
123-555-9999
820-555-9000";
pattern = @"(\d{3})(-)(\d{3})(-)(\d{4})";
rep= @"($1) $3-$5";
/*结果:
* (313) 555-1244
* (123) 555-9999
* (820) 555-9000
*/