Go语言处理正则表达式(一)

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第21天,点击查看活动详情

正则表达式具有灵活性、逻辑性以及功能性,可以迅速的用简单的方式实现字符串的一些复杂控制,正则表达式提高了文本的处理能力,应用也很广泛,比如表单的输入验证、文本的提取、数据分析等,我们平时使用的一些文本处理软件也基本都支持正则表达式,譬如WPS、WORD、VisualStudio等都使用了正则表达式来处理文本内容;

正则表达式的语法

正则表达式由普通字符(a~z、A~Z、0~9等)和一些特殊字符,组成的文字模式,这个模式是指在中搜索文本时要匹配的一个或多个字符串,正则表达式作为一个模板,会将某个字符模式与所搜索的字符串相匹配;

普通字符

普通字符包括所有的大写和小写字母、所有数字、所有标点符号和一些其他的符号,普通字符包括可打印字符和非可打印字符;

非打印字符也可以时正则表达式的组成部分;

特殊字符

特殊字符是指一些有特殊含义的字符,例如“txt"中的,它表示任意字符串,如果要叉腰文件名含有“”的文件,则需要对““进行转义,在其前面加一个反斜杠”\”,例如”ls*.txt“;

若要匹配这些特殊字符,必须首先使用字符转义,将反斜杠放在它们的前面;

限定符

限定符用来指定正则表达式的一个给定组件必须要出现多少次才能满足匹配;

限定符出现在范围表达式之后,因此它应用于整个范围表达式;

定位符

定位符能够将正则表达式固定到行首或者行尾,定位符还可以创建正则表达式,这些正则表达式出现在一个单词内、在一个单词的开头或者一个单词的结尾;

定位符用来描述字符串或者单词的边界,(^)和($)分别指字符串的开始和结束,\b描述单词的前或者后的边界,\B表示非单词边界;

选择

可以用圆括号将所有选择项括起来,相邻的选择项之间可以用|分隔;

但是用圆括号会有一个副作用,就是相关的匹配会被缓存,可用“?:”放在第一个选项前来消除这种副作用;

其中“?:”是非捕获元之一,还有两个非捕获元是“?=”和“?!”,这两个还有更多的含义

  • “?=”为正向检查,从任何开始匹配圆括号内的正则表达式模式的位置来匹配搜索字符串
  • “?!”为负向预查,从任何开始不匹配该正则表达式的位置来匹配搜索字符串

本篇文章关于正则表达式的一部分基本内容就介绍到这里,下一篇将继续写正则表达式的相关内容,并对普通字符、特殊字符、限定符、定位符等做一些补充示例,感兴趣可以关注作者

猜你喜欢

转载自juejin.im/post/7132490611084492830