复习正则表达式(二)
接着上周的表达式复习一下。
今天主要复习一些进阶的用法
1.分组匹配操作
a(bc) :将a和字母b、字母c分别组合匹配,匹配ab或者ac这样的组合。
a(?:bc): 操作符 ?: 表示,不匹配字母a与字母b或字母c单独的组合。也就是说不能类似上一个例子一样匹配。但是能同时匹配abc以及a和b、c不同时存在的字符串。
当我们从字符串数据中提取数据时候,这两个操作符非常有用。这种捕捉模式通常会产生一个数组,我们可以很方便的使用索引来访问匹配到的所有数据。
2.括号表达式
[0-9]%:匹配百分号前面含有0-9数字的字符串。
[^a-zA-Z]:匹配不包含字母的字符串数据,最前面的操作符^ 在和括号表达式联合使用的时候表示取反,而不是字符串的开头。
在括号表达式中,所有的特殊的字符都会失去特殊的功能,所以在括号中不需要使用反斜杠来屏蔽特殊字符。
3.贪婪算法和懒惰算法
操作符(* + {} )是贪婪操作符。使用这些操作符将会尽可能的匹配更多的字符数据。
例如我们在字符串: simple
我们使用<.+>将匹配整个字符串,但是如果我们加上一个 ?操作符,此时我们仅仅能够匹配和 这两个字符串。
从这里我们就可以看出来,加上? 将使整个匹配算法处于懒惰模式中,尽可能少的捕捉字符数据。
今天主要是复习了下分组操作和括号表达式,这个在平常的操作中用得特别多,下一次将对一些高端的用法做一些复习总结。