正则表达式

  • 正则表达式是用来进行文本处理的技术,是语言无关的,在几乎所有语言中都有实现。javascript中还会用得到。
  • 一个正则表达式是由普通字符串以及特殊字符字符(称为元字符)组成的文字模式,该模式描述在查找文字主体时,待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行比较。
  • 就像通配符“*.jpg”、“%ab%”,它是对字符串进行匹配的特殊字符串。
  • 正则表达式是非常复杂的,不要希望一次能掌握,理解正则表达式能做什么(字符串的匹配,字符串的提取,字符串的替换),掌握常用的正则表达式语法,以后用到再查就行。
  • 找工作的亮点,后面项目中的采集器,敏感词过滤、URLRewite、Validator也会涉及到正则表达式。
  • 正则表达式是对字符串进行操作的
  • 理解元字符是一个必须攻克的难关

(1).:匹配除\n之外的任何一个字符。例如正则表达式“b.g”能匹配如下字符串:“big”、“bug”、“b g”,但是不匹配“buug”,"b..g"可以匹配“buug”。

(2)[]:匹配括号中的任何一个字符。例如正则表达式“b[aui]g”匹配bug、big和bag,但是不匹配beg、baug。也可以在括号中使用连字符“-”来指定字符的区间。例如正则表达式[0-9]可以匹配任何数字字符,这样正则表达式"a[0-9]c"等价于"a[0123456789]c"就可以匹配“a0c”、“a1c”,"a2c"等字符串;还可以制定多个区间,例如“[A-Za-z]”可以匹配任何大小的字母,“[A-Za-z0-9]”,可以匹配任何的大小写字母或者数字。

匹配11-20之间的数字,正则表达式为[12][0-9],不能写成[10-29],因为这里的10和29只是表示字符1 或0 2或9

(2)|:将这个匹配条件进行逻辑"或"运算。‘z|food’能匹配“z”或“food”。‘(z|f)ood’则匹配“zood”或“food”。注意^$。[ab]等价于a|b

(3)():将()之间括起来的表达式定义为“组”(group),并且将匹配这个表达式的字符保存到一个临时区域,这个元字符在字符串提取的时候非常有用。把一个字符串表示为一个整体。改变优先级,定义提取组两个作用。

限定符:限定前面的表达式出现的次数。

(4)匹配多个在它之前的子表达式,和通配符没有关系。例如正则表达式“zo*”等同于“z(o*)”能匹配“z”,"zo"以及"zoo",因此"*“意味着能够匹配任意字符串。

”z(b|c)*“可以匹配zb,zbc,zcb,zcccc,zbbbcc。”z(ab)*"能匹配zab,zabab(用括号表示优先级)。

(5)+:匹配前面的子表达式一次或多次,和*对比(0到多次)。例如正则表达式,9+匹配9,99,999等。"zo+“以及”zoo",不能匹配"z“。

(6)?:匹配前面的子表达式零次或一次。例如”do(es)?"可以匹配"do“,”does"。一般用来匹配"可选部分“。

(7){n}:匹配确定的n次。”zo{2}“-zoo。例如”e{2}“不能匹配”bed“中的”e“,但是能匹配”seed“中的两个”e“。

(8){n,}:至少匹配n次。例如”e{2,}“不能bed中的”e“,但能匹配”seeeeeed“中的所有”e“。

(9){n,m}:最少匹配n次最多匹配m次。”e{1,3}“

 (10)^匹配一行的开始,例如正则表达式”^regex“能够匹配字符串“^regex我会用”的开始,但是不能匹配“我会用regex”。^另外一种意思:非[^0-9]

(11)$匹配行结束符。例如正则表达式“浮云$”,能够匹配字符串“一切都是浮云”的末尾,但是不能匹配字符串“浮云呀”。

正则表达式

上一篇:codeforces A. Array 解题报告


下一篇:Dbvisualizer9.0.6 解决中文乱码