正则表达式 学习笔记(三)

11.分组

你可以使用括号表示分组:

  • 通过使用 Mon|Tues|Wednes|Thurs|Fri|Satur|Sun)day 匹配一周中的某一天
  • (\w*)ility  与 \w*ility 相同。都是匹配一个由”ility”结尾的单词。稍后我们会讲解,为何第一种方法更加有用。
  • 表示匹配一对括号。
  • [()]表示匹配任意一个左括号或者一个右括号
  • (red|blue)表示匹配red或者blue或者是一个空字符串
  • abc()def与abcdef相同
  • (red|blue)?与(red|blue|)相同
  • \w+(\s+\w+)表示匹配一个或多个由空格分隔的单词

示例

 \w+\W+\w+\W+\w+  =  \w+(\W+\w+){2}

 \w+\W+\w+\W+\w+\W+\w+\W+\w+\W+\w+  =  \w+(\W+\w+){5}

12.单词分隔符

  • \b表示匹配一个单词分隔符
  • \b\w\w\w\b表示匹配一个三字母单词
  • a\ba表示匹配两个a中间有一个单词分隔符。这个正则表达式永远不会有匹配的字符,无论输入怎样的文本示例

 

 

13.换行符

一篇文本中可以有一行或多行,行与行之间由换行符分隔,比如

LINE一行文字

LINE BREAK 换行符

LINE一行文字

LINE BREAK 换行符

...

LINE一行文字

LINE BREAK 换行符

注意,所有的文本都是以一行结束的,而不是以换行符结束。但是,任意一行都可能为空,包括最后一行。行的起始位置,是在换行符和下一行首字符之间的空间。考虑到单词分隔符,文本的起始位置也可以当做是首行位置。最后一行是最后一行的尾字符和换行符之间的空间。考虑到单词分隔符,文本的结束也可以认为是行的结束。基于此概念:

  • ^表示匹配行的开始位置
  • $表示匹配行的结束位置
  • ^&表示一个空行
  • ^.*& 表示匹配全文内容,因为行的开始符号也是一个字符,"."会匹配这个符号。找到单独的一行,可以使用 ^.*?$
  • \^\$表示匹配字符串“^$”
  • [$]表示匹配一个$。但是,[^]不是合法的正则表达式。记住在方括号中,字符有不同的特殊含义。要想在方括号内匹配^,必须用[\^]

14.文本分界

在很多的正则表达式实现中,将^和$作为文本的开始符号和结束符号。

还有一些实现中,用\A和\z作为文本的开始和结束符号。

15.捕获组

正则表达式(\w*)ility表示匹配以ility结尾的词。第一个被捕获的部分是由\w*控制的。比如,输入的文本内容中有单词accessibility,那么首先被捕获的部分是accessib。如果输入的文本中有单独的ility,则首先被捕获的是一个空字符串。

  

总结:

  • 字符: a b c d 1 2 3 4 etc.
  • 字符类: . [abc] [a-z] \d \w \s
    • . 代表任何字符
    • \d 表示“数字”
    • \w   表示”字母”, [0-9A-Za-z_]
    • \s   表示 “空格, 制表符,回车或换行符”
    • 否定字符类: [^abc] \D \W \S
  • 重复: {4} {3,16} {1,} ? * +
    • ? 表示 “零次或一次”
    • * 表示 “大于零次”
    • + 表示 “一次或一次以上”
    • 如果不加上?,所有的重复都是最长匹配的(贪婪)
  • 分组: (Septem|Octo|Novem|Decem)ber
  • 词,行以及文本的分隔: \b ^ $ \A \z
  • 转义字符: \1 \2 \3 etc. (在匹配表达式和替换表达式中都可用)
  • 元字符: . \ [ ] { } ? * + | ( ) ^ $
  • 在字符类中使用元字符: [ ] \ - ^
  • 使用反斜杠可以忽略元字符: \
posted @ 2016-06-24 21:30  咖啡漩涡  阅读(228)  评论(0编辑  收藏  举报