Python的re模块学习---正则表达式

元字符列表:    . ^ $ * + ? { [ ] \ | ( )


(1):  "[" 和 "]"   ----用来指定一个字符类别,所谓字符类别就是你想匹配的一个字符集

[abc] 将匹配"a", "b", 或 "c"中的任意一个字符;也可以用区间[a-c]来表示同一字符集,和前者效果一致。

如果你只想匹配小写字母,那么 RE 应写成 [a-z].

元字符在类别里并不起作用,[akm$]将匹配字符"a", "k", "m", 或 "$" 中的任意一个;"$"通常用作元字符,

但在字符类别里,其特性被除去,恢复成普通字符。


(2):^ -----补集,用来匹配不在区间范围内的字符

把"^"作为类别的首个字符其它地方的"^"只会简单匹配 "^"字符本身。例如,[^5] 将匹配除 "5" 之外的任意字符。


(3):反斜杠"\"  

----它也可以用于取消所有的元字符,这样你就可以在模式中匹配它们了。举个例子,如果你需要匹配字符 "[" 或 "\",

你可以在它们之前用反斜杠来取消它们的特殊意义: \[ 或 \\。

-----一些用 "\" 开始的特殊字符所表示的预定义字符集通常是很有用的,数字集,字母集,或其它非空字符集。

下列是可用的预设特殊字符:

\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_]。

例如:[\s,.]字符类将匹配任何空白字符或","或"."


(4):"." ----匹配除了换行字符外的任何字符。在 alternate 模式(re.DOTALL)下它甚至可以匹配换行


(5):"*" ----重复零次或多次

a[bcd]*b,它匹配字母 "a",零个或更多个来自类 [bcd]中的字母,最后以 "b" 结尾


(6):"+" ----重复一次或多次


(7):"?" ----匹配零次或一次 home-?brew 匹配 "homebrew" 或 "home-brew"


(8):"{m,n}" ----m 和 n 是十进制整数。至少有 m 个重复,至多到 n 个重复。

a/{1,3}b 将匹配 "a/b","a//b" 和 "a///b"。它不能匹配 "ab" 因为没有斜杠,也不能匹配 "ab" ,因为有四个。

{0,} 等同于 *,{1,} 等同于 +,而{0,1}则与 ? 相同。如果可以的话,最好使用 *,+,或?

在字符串前加个 "r" 反斜杠就不会被任何特殊方式处理,所以 r"\n" 就是包含"\" 和 "n" 的两个字符,而 "\n" 则是一个字符,表示一个换行

(9):"( )" ----括号里是一个整体


RegexObject 实例有一些方法和属性

方法/属性 作用  

match()  决定 RE 是否在字符串刚开始的位置匹配  
search() 扫描字符串,找到这个 RE 匹配的位置  
findall() 找到 RE 匹配的所有子串,并把它们作为一个列表返回  finditer() 找到 RE 匹配的所有子串,并把它们作为一个迭

代器返回


MatchObject 方法和属性

方法/属性作用  
group() 返回被 RE 匹配的字符串  

start()返回匹配开始的位置  

end()返回匹配结束的位置  
span()  返回一个元组包含匹配 (开始,结束) 的位置


编译标志

标志含义  
DOTALL, S 使 . 匹配包括换行在内的所有字符  IGNORECASE, I 使匹配对大小写不敏感  LOCALE, L  做本地化识别

(locale-aware)匹配  

MULTILINE, M多行匹配,影响 ^ 和 $  

VERBOSE, X 能够使用 REs 的 verbose 状态,使之被组织得更清晰易懂

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值