1: 找到字符串中成双的单词 p = re.compile(r'(\b\w+)\s+\1') 2: \d 匹配任何十进制数;它相当于类 [0-9]。 \D 匹配任何非数字字符;它相当于类 [^0-9]。 \s 匹配任何空白字符;它相当于类 [ \t\n\r\f\v]。 \S 匹配任何非空白字符;它相当于类 [^ \t\n\r\f\v]。 \w 匹配任何字母数字字符;它相当于类 [a-zA-Z0-9_]。 \W 匹配任何非字母数字字符;它相当于类 [^a-zA-Z0-9_]。 在正则表达式里面区分单双引号的。 3: 正则表达式模式被编译成一系列的字节码,然后由用 C 编写的匹配引擎执行 (1) 匹配个数的限制 . 表示匹配除了换行符外的任何字符。 ?表示匹配0次或者一次 {m,n} 表示至少重复m次, 最多重复n次; 备注,逗号后面是没有空格的. {m,n}?表示去n次 {0,} = * ; {1,} = + ; {0,1} = ? 但是最好使用 *, + ? (2)re 可以传递参数 re.IGNORECASE, (3) 解决了\的麻烦 \的ASCII 编码92 解决的办法就是为正则表达式使用 Python的 raw 字符串表示;在字符串前加个 "r" 反斜杠就不会被任何特殊方式处理,所以 r"\n" 就是包含"\" 和 "n" 的两个字符,而 "\n" 则是一个字符,表示一个换行。正则表达式通常在 Python 代码中都是用这种 raw 字符串表示 (4)模块级函数 就是不用RegexObject 就可以调用的函数, 比如 match, search, sub, (5)编译标志 DOTALL, S 可以是.匹配包含换行符以外的所有的字符 MULTILINE 多行匹配, ^和$会受到影响。s = "//andy\n//beibei", re.sub(re.compile('^//', re.M), '', s);----comments---- the wrong use: re.sub("^//", "", s, re.M) VERBOSE该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。当该标志被指定时,在 RE 字符串中的空白符被忽略,除非该空白符在字符类中或在反斜杠之后;这可以让你更清晰地组织和缩进 RE。它也可以允许你将注释写入 RE,这些注释会被引擎忽略;注释用 "#"号 来标识,不过该符号不能在字符串或反斜杠之后。 (6) \A 只匹配字符串首。当不在 MULTILINE 模式,\A 和 ^ 实际上是一样的。然而,在 MULTILINE 模式里它们是不同的;\A 只是匹配字符串首,而 ^ 还可以匹配在换行符之后字符串的任何位置 (7)\Z 只匹配字符串尾部 (8)\b 单词限定符 (9)\B 与\b相反 (10) 组用 "(" 和 ")" 来指定,并且得到它们匹配文本的开始和结尾索引;这就可以通过一个参数用 group()、start()、end() 和 span() 来进行检索。组是从 0 开始计数的。组 0 总是存在;它就是整个 RE,所以 `MatchObject` 的方法都把组 0 作为它们缺省的参数。稍后我们将看到怎样表达不能得到它们所匹配文本的 span。[\s,.]字符类将匹配任何空白字符或","或"."。
4: [\s,.]字符类将匹配任何空白字符或","或"."。 |
|