Loading... <h1>正则表达式简述<br /></h1> <h4 style="text-align: left;text-indent: 0em"><strong>什么是正则表达式:</strong></h4> <p style="text-indent: 2em">正则表达式,又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。</p> <h4 style="text-indent: 0em">正则表达式分类:<br /></h4> <ul class=" list-paddingleft-2"> <li> <p>标准正则表达式</p> </li> <li> <p>扩展正则表达式</p> </li> </ul> <h4>标准正则表达式:<br /></h4> <ul class=" list-paddingleft-2"> <li> <p><strong>元字符</strong></p> </li> </ul> <p style="text-indent: 2em">. :表示匹配任意单个字符</p> <p style="text-indent: 28px"><span style="color:#333333;font-family:arial, 宋体, sans-serif">[ ] :表示匹配指定范围内的任意单个字符</span></p> <p style="text-indent: 28px"><span style="color:#333333;font-family:arial, 宋体, sans-serif">[^] :表示匹配指定范围外的任意单个字符</span></p> <p style="text-indent: 28px"><span style="color:#333333;font-family:arial, 宋体, sans-serif">字符合集:<br /></span></p> <p style="text-indent: 28px"><span style="color:#333333;font-family:arial, 宋体, sans-serif">[:space:] 匹配空格</span></p> <p style="text-indent: 28px"><span style="color:#333333;font-family:arial, 宋体, sans-serif">[:digiat:] 匹配数字</span></p> <p style="text-indent: 28px"><span style="color:#333333;font-family:arial, 宋体, sans-serif">[:lower:] 匹配小写字母</span></p> <p style="text-indent: 28px"><span style="color:#333333;font-family:arial, 宋体, sans-serif">[:upper:] 匹配大写字母</span></p> <p style="text-indent: 28px"><span style="color:#333333;font-family:arial, 宋体, sans-serif">[:alpha:] 匹配大小写字母</span></p> <p style="text-indent: 28px"><span style="color:#333333;font-family:arial, 宋体, sans-serif">[:punct:] 匹配所有标点符号</span></p> <p style="text-indent: 28px"><span style="color:#333333;font-family:arial, 宋体, sans-serif">[:alnum:] 匹配大小写字母和数字</span></p> <p style="text-indent: 28px"></p> <ul class=" list-paddingleft-2"> <li> <p><strong>次数匹配</strong></p> </li> </ul> <p style="text-indent: 2em">*:匹配其前面的字符任意次数</p> <p style="text-indent: 28px"><span style="color:#333333;font-family:arial, 宋体, sans-serif">.*:匹配任意长度的任意字符</span></p> <p style="text-indent: 28px"><span style="color:#333333;font-family:arial, 宋体, sans-serif">\?:匹配其前面的字符1次或0次</span></p> <p style="text-indent: 28px"><span style="color:#333333;font-family:arial, 宋体, sans-serif">\{m,n\} :匹配其前面的字符至少m次至多n次</span></p> <ul class=" list-paddingleft-2"> <li> <p><strong>位置锚定</strong></p> </li> </ul> <p style="text-indent: 28px">^ :锚定行首,此字符后面的任意内容出现在行首</p> <p style="text-indent: 28px">$ :锚定行尾,此字符前面的任意内容出现在行尾</p> <p style="text-indent: 28px">\<或\b:锚定词首,此字符后面的任意字符必须作为单词的首部出现</p> <p style="text-indent: 28px">\>或\b:锚定词尾,此字符前面的任意字符必须作为单词的尾部出现</p> <p style="text-indent: 28px"></p> <ul class=" list-paddingleft-2"> <li> <p><strong>分组</strong></p> </li> </ul> <p style="text-indent: 28px"><span style="color:#333333;font-family:arial, 宋体, sans-serif">\(\):对括号内内容进行分组,视为一个整体进行读取,并便于后向引用。</span></p> <p style="text-indent: 28px"><span style="color:#333333;font-family:arial, 宋体, sans-serif">\1:引用第一个分组匹配内容</span></p> <p style="text-indent: 28px"><span style="color:#333333;font-family:arial, 宋体, sans-serif">\2:引用第二个分组匹配内容</span></p> <p style="text-indent: 28px"><span style="color:#333333;font-family:arial, 宋体, sans-serif">\n:引用第N个分组匹配内容</span></p> <p style="text-indent: 28px"><span style="color:#333333;font-family:arial, 宋体, sans-serif"><br /></span></p> <h4>扩展正则表达式:<br /></h4> <p></p> <ul class=" list-paddingleft-2" style="width: 773.297px"> <li> <p>元字符</p> </li> </ul> <p style="text-indent: 2em"></p> <p style="text-indent: 2em">. :表示匹配任意单个字符</p> <p style="text-indent: 28px">[ ] :表示匹配指定范围内的任意单个字符</p> <p style="text-indent: 28px">[^] :表示匹配指定范围外的任意单个字符</p> <p style="text-indent: 28px">字符合集:</p> <p style="text-indent: 28px">[:space:] 匹配空格</p> <p style="text-indent: 28px">[:digiat:] 匹配数字</p> <p style="text-indent: 28px">[:lower:] 匹配小写字母</p> <p style="text-indent: 28px">[:upper:] 匹配大写字母</p> <p style="text-indent: 28px">[:alpha:] 匹配大小写字母</p> <p style="text-indent: 28px">[:punct:] 匹配所有标点符号</p> <p style="text-indent: 28px">[:alnum:] 匹配大小写字母和数字</p> <p style="text-indent: 2em"></p> <ul class=" list-paddingleft-2" style="width: 773.297px"> <li> <p>次数匹配</p> </li> </ul> <p style="text-indent: 2em">*:匹配其前面的字符任意次数</p> <p style="text-indent: 28px">.*:匹配任意长度的任意字符</p> <p style="text-indent: 28px">?:匹配其前面的字符1次或0次</p> <p style="text-indent: 28px">+:匹配其前面的字符至少1次</p> <p style="text-indent: 28px">{m,n} :匹配其前面的字符至少m次至多n次</p> <ul class=" list-paddingleft-2" style="width: 773.297px"> <li> <p>位置锚定</p> </li> </ul> <p style="text-indent: 28px">^ :锚定行首,此字符后面的任意内容出现在行首</p> <p style="text-indent: 28px">$ :锚定行尾,此字符前面的任意内容出现在行尾</p> <p style="text-indent: 28px">\<或\b:锚定词首,此字符后面的任意字符必须作为单词的首部出现</p> <p style="text-indent: 28px">\>或\b:锚定词尾,此字符前面的任意字符必须作为单词的尾部出现</p> <ul class=" list-paddingleft-2" style="width: 773.297px"> <li> <p>分组</p> </li> </ul> <p style="text-indent: 28px">():对括号内内容进行分组,视为一个整体进行读取,并便于后向引用。</p> <p style="text-indent: 28px"><span style="color:#333333;font-family:arial, 宋体, sans-serif">\1:引用第一个分组匹配内容</span></p> <p style="text-indent: 28px"><span style="color:#333333;font-family:arial, 宋体, sans-serif">\2:引用第二个分组匹配内容</span></p> <p style="text-indent: 28px"><span style="color:#333333;font-family:arial, 宋体, sans-serif">\n:引用第N个分组匹配内容</span></p> <p style="text-indent: 28px"></p> <p style="text-indent: 28px">例:</p> <p style="text-indent: 28px">匹配IP地址包网络地址和广播地址表达式</p> <p style="text-indent: 28px">(\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>\.){3}\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\></p> <p style="text-indent: 28px">表达式解释:</p> <p style="text-indent: 2em"><span style="text-indent: 28px">(\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>\.) 该部分内容匹配0-255的数字和.</span></p> <p style="text-indent: 28px">{3} 该部分内容表示匹配前面分组内容三次</p> <p style="text-indent: 28px">\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\> 表示匹配IP地址最后一位 0-255的数字</p> <p style="text-indent: 28px"></p> 最后修改:2021 年 12 月 10 日 10 : 53 AM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 赞赏作者 支付宝微信