杂学第九篇:小白对正则匹配的学习和总结!!!! - Go语言中文社区

杂学第九篇:小白对正则匹配的学习和总结!!!!


烦烦烦!!!正则匹配作为开发中一个利器,要用的时候我只能搜百度!!!为什么???我要充分理解它,熟练使用它!!!要用它成功匹配任何字符!!!

认识和总结

正则表达式结构繁多,威力巨大。本想仔仔细细的说清楚,但是奈何功力不到位,自己都有好些不会,那有什么资格全部去解说。

so,精挑细捡,就跟大家讨论下一些个人经验,比如开发中经常会碰到的,或者容易忽视的细节。

1.总结下 一些元字符中经常不用,但是用处极大的元字符。

s :匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ fnrtv]。注意 Unicode 正则表达式会匹配全角空格符。
你们看,多强大,你们要是想去掉字符串中的空格,换行,回车,制表符。还需要写一大串吗?一个s搞定。

S :这个就是s的取反!!!,也就是[^ fnrtv]。我靠,上面那个能替换掉那个非打印字符。这个就能提取整个字符串中的除了非打印字符的其他字符。一个替换,一个提取。

^…$ :如果我们的正则表达式注重对字符串的整体匹配(也就是不涉及换行),比如邮箱,手机号,url,用户名等建议在开头和结尾加上这两个定位符,返回唯一结果。如下图,加了^和$的只会判断整个字符串,而不加,则会寻找整个字符串中符合表达式的子字符串。
在这里插入图片描述
. : . 看起来一点都不起眼,甚至没多少人。但你们知道它能干啥不??匹配除换行符 n 之外的任何单字符,如果你的字符串中没有n,它能立即返回整个字符串的单个字符,额,用处不大是不知道用来干嘛,得到字符串的单个字符方式和多,比它速度也快,所以略显鸡肋。

* + ? :这三个很容易搞混它们的意思,如果经常用就会很清楚啦。* 匹配 0-n次,相当于{0,}。而 + 匹配1-n次,相当于{1,}? 匹配 0或1次,相当于{0,1}

* . ? :这三个有一个用法要注意。
".*" 是一个很贪婪的表达式,它会尽可能大的匹配符合。如下图
直接将最前面<和最后面的>中间的都匹配出来
".*?" 加了一个?,?能保证只匹配最近的一对<>,所以它能返回两个<>之间的内容,而不是最大的那个。如下图
在这里插入图片描述

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/zhangtao0417/article/details/99675068
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。

0 条评论

请先 登录 后评论

官方社群

GO教程

推荐文章

猜你喜欢