比方说我需要判断一个串是不是一个邮箱,你需要判断它是是不是由字母数字下划线组成,还包含一个@,且只有一个@,而且这个@不能在最前最后,串的最后面需要以.com来结尾,而且这个.com还不能紧跟在@后面,balabala一大堆的规则,这么多要是用if来判断实在是太麻烦了吧。
那么你写一个正则表达式可以一下子定义完所有的规则,我写一个简单的判断是否为邮箱的正则 ^[\da-zA-Z_]+@[\da-zA-Z_]+.com$, \d表示一个数字,a-zA-Z表示52个大小写的英文字母[\da-zA-Z_]表示在数字字母和下划线中取出一个值,这个值可以是a/b/K/N/2/_,+表示1-n个,^$表示串的开头和结尾。那么上面的表达式的意思就是“以1-n个字母或数字或下划线开头,后面跟个@再跟1-n个字母或数字或下划线,最后以.com结尾。”如果一个串满足这样的规则我就认为它是一个邮箱,当然,这是你定的规则。
正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表通常被用来检索、替换那些符合某个模式(规则)的文本。
许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。正则表达式通常缩写成"regex",单数有regexp、regex,复数有regexps、regexes、regexen。
\ 表示转义
\\:在字符串中表示一个 \
[^\\]:除了\外的任意字符
[] :其中之一
+ :至少出现一次
] :匹配 ]
把以上的串起来就是匹配:"\"+"任意非\的字符至少一次" +"\"+"]"
例如可以匹配:
"\abcede\]"
第一步是首先转义符是最高优先级,抽出来得:
\[[^\]]+\]"
第二步是方括号[]是第二优先级,[要从左到右匹配最近的一个],于是
\[[^\]中的方括号里面有[^\
第三步是+是第三优先级,于是]会有一次到两次
最终,可以被这个表达式所匹配的文本如下:
\[]\]"
例如:PerformanceManager[第1个中括号]Product[第2个中括号]<[第3个中括号]79~
输出:第1个中括号第2个中括号第3个中括号]