【Go】Go 文本匹配 - 正则表达式

        正则表达式(Regular Expression, 缩写常用regex, regexp表示)是计算机科学中的一个概念,很多高级语言都支持正则表达式。

目录

何为正则表达式

语法规则

普通字符

字符转义


何为正则表达式

        正则表达式是根据一定规则构建而出的规则,用于匹配字符串中子串或字符组合的模式。正则表达式可以通过元符号 + 字符的形式来表示,完成对一系列符合某个语法规则的字符串的匹配。正则表达式的应用在许多软件中都有体现,例如Visual Studio中的查找替换功能、谷歌百度搜索引擎中的搜索字段等。

        正则表达式在编程中扮演着十分重要的角色。比如我们要接收处理一个文本输入框中的数据,需要判断文本输入框中的内容是否符合邮箱的格式。此时,便可以通过正则表达式来实现判定匹配(当然,繁长的if else这类语句也可实现,但这便偏离了正则表达式的设计初衷)


语法规则

普通字符

        普通字符是正则表达式的基本组成之一,是正则表达式的“基石”。普通字符包括有“可打印字符”、“不可打印字符”,其中“可打印字符”中又包含了大写字母、小写字母、数字、标点符号和其他一些符号

        这里设计一个场景,假设我们需要判断一个字符变量是否是数字,若不考虑使用正则表达式,那么要实现这个判断,我们需要使用下列代码

switch num {

	case 1 :
	case 2 :
	case 3 :
		.
		.
		.
	case 0 :	

}

       使用用这类编码方式,效率将会大打折扣。

        此时,我们便可以尝试用正则表达式了

[0123456789]

        方括号“[]”表示的是一个“字符组”,代表一位字符。方括号中的数字“0123456789”表示只要待匹配的字符串与其中任何一个字符相同,那么程序就会认为匹配成功,反之匹配失败。

        如果想表达的数字(ASCII码)是连续的,那么也可以用元字符“-”来对表达式进行简化,见下方:

[0-9]

拓展:

        ASCII码表

【Go】Go 文本匹配 - 正则表达式_第1张图片

        依次类推,当我们想判断一个长度为1的字符串是否是英文小写字母,可以写成:

[a-z]

        那像表示由大写字母“A”到小写字母"z"呢?这里要注意,我们不能写成 [A-z]观察拓展中的ASCII表,其中在字母“A”和字母"a"之间存在其他字符。

        那么正确的表达方式应是

[a-zA-Z]

        如果要判断长度为2的字符串中是否含有小写字母呢?

[a-z][a-z]

        当允许的字符范围只有一个时可以省略“[]”。比如,判断输入的是“Hello”还是"hello":

[Hh]ello

字符转义

        在正则表达式中,有时我们需要使用符号本身的意义,例如之前所用到的字符 ‘-’ ,如果在没进行转义的情况下,它是一个元字符,是一个“功能性”的符号;当我们确实需要表达 ‘-’ 这个符号的本义时,就需要使用反斜杠 ‘\’ 了。例如若要匹配 ‘[’ 符号,则可以表示为:

[\[]

        如果想匹配“a” “-” “z” 这三个字符,那么便可以用下列表达式:

[0\-9]

拓展:

        元字符除了 ‘-’ 之外,还有其他的,见下表:

【Go】Go 文本匹配 - 正则表达式_第2张图片

【Go】Go 文本匹配 - 正则表达式_第3张图片

更新中……

你可能感兴趣的:(编程语言,go,golang,正则表达式,个人开发,自动化)