Python re 正则模块
来源:互联网 发布:telnet端口命令 编辑:程序博客网 时间:2024/04/28 18:06
有些字符比较特殊,它们和自身并不匹配,而是会表明应和一些特殊的东西匹配,或者它们会影响到 RE 其它部分的重复次数,它们叫元字符。
. ^ $ * + ? { [ ] \ | ( )
“[” 和 “]”常用来指定一个字符类别,所谓字符类别就是你想匹配的一个字符集。字符可以单个列出,也可以用“-”号分隔的两个给定字符来表示一个字符区间。
[abc] 将匹配”a”, “b”, 或 “c”中的任意一个字符;也可以用区间[a-c]来表示同一字符集,和前者效果一致。如果你只想匹配小写字母,那么RE 应写成 [a-z].
例如,[akm
用补集来匹配不在区间范围内的字符。其做法是把”^”作为类别的首个字符;其它地方的”^”只会简单匹配 “^”字符本身。例如,[^5] 将匹配除 “5” 之外的任意字符。
反斜杠 \
\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,.]字符类将匹配任何空白字符或”,”或”.”。
重复
第一个重复功能的元字符是 。 并不匹配字母字符 “*”;相反,它指定前一个字符可以被匹配零次或更多次,而不是只有一次。
举个例子,ca*t 将匹配 “ct” (0 个 “a” 字符), “cat” (1 个 “a”), “caaat” (3 个 “a” 字符)等等。RE 引擎有各种来自 C 的整数类型大小的内部限制,以防止它匹配超过2亿个 “a” 字符;你也许没有足够的内存去建造那么大的字符串,所以将不会累计到那个限制。
另一个重复元字符是 +,表示匹配一或更多次。请注意 * 和 + 之间的不同;*匹配零或更多次,所以根本就可以不出现,而 + 则要求至少出现一次。用同一个例子,ca+t 就可以匹配 “cat” (1 个 “a”), “caaat” (3 个 “a”), 但不能匹配 “ct”。
还有更多的限定符。问号 ? 匹配一次或零次;你可以认为它用于标识某事物是可选的。例如:home-?brew 匹配 “homebrew” 或 “home-brew”。
最复杂的重复限定符是 {m,n},其中 m 和 n 是十进制整数。该限定符的意思是至少有 m 个重复,至多到 n 个重复。举个例子,a/{1,3}b 将匹配 “a/b”,”a//b” 和 “a///b”。它不能匹配 “ab” 因为没有斜杠,也不能匹配 “a////b” ,因为有四个。
你可以忽略 m 或 n;因为会为缺失的值假设一个合理的值。忽略 m 会认为下边界是 0,而忽略 n 的结果将是上边界为无穷大 – 实际上是先前我们提到的 2 兆,但这也许同无穷大一样。
反斜杠的麻烦
在早期规定中,正则表达式用反斜杠字符 (“”“) 来表示特殊格式或允许使用特殊字符而不调用它的特殊用法。这就与 Python 在字符串中的那些起相同作用的相同字符产生了冲突。
让我们举例说明,你想写一个 RE 以匹配字符串 “”section”,可能是在一个 LATEX 文件查找。为了要在程序代码中判断,首先要写出想要匹配的字符串。接下来你需要在所有反斜杠和元字符前加反斜杠来取消其特殊意义。
字符 阶段
\section 要匹配的字符串
\section 为 re.compile 取消反斜杠的特殊意义
“\\section” 为字符串取消反斜杠
简单地说,为了匹配一个反斜杠,不得不在 RE 字符串中写 ‘\’,因为正则表达式中必须是 “\”,而每个反斜杠按 Python 字符串字母表示的常规必须表示成 “\”。在 REs 中反斜杠的这个重复特性会导致大量重复的反斜杠,而且所生成的字符串也很难懂。
解决的办法就是为正则表达式使用 Python 的 raw 字符串表示;在字符串前加个 “r” 反斜杠就不会被任何特殊方式处理,所以 r”\n” 就是包含”\” 和 “n” 的两个字符,而 “\n” 则是一个字符,表示一个换行。正则表达式通常在 Python 代码中都是用这种 raw 字符串表示。
如果没有匹配到的话,match() 和 search() 将返回 None。如果成功的话,就会返回一个 MatchObject
实例,其中有这次匹配的信息:它是从哪里开始和结束,它所匹配的子串等等。
- match是从字符串的开始匹配,如果匹配失败就返回None
- search是在整个字符串中匹配。
比较详细Python正则表达式操作指南(re使用)
- Python re 正则模块
- python re正则模块
- python正则表达式:re模块
- Python 正则表达式 re模块
- Python 正则表达式,re模块
- Python re模块正则表达式
- Python--正则表达模块re
- Python正则表达式re模块
- Python正则及re模块
- Python正则表达式,re模块
- Python--正则表达模块re
- python 正则表达式 re模块
- Python 正则表达式 re模块
- python---re模块,正则表达式
- python正则表达式模块re
- Python正则表达式re模块
- python模块RE模块正则表达式
- python中正则表达式与re 模块
- 客户端网页编程--第四章
- 链表(LinkedList) Java 语言实现
- hdu 5317 RGCDQ (素因子个数的GCD)
- 洛克菲勒留给儿子的38封信
- ORACLE:分区表range,hash,list
- Python re 正则模块
- C++面试题之写一个在一个字符串中寻找一个子串第一个位置的函数
- Snail—UI学习之系统标签栏UITabBarController
- [HDU 2065] "红色病毒"问题 数论
- HDOJ~~ u Calculate e
- hls 的一些体会
- hdoj 1856 More is better [并查集]
- HDOJ 1879 继续畅通工程(最小生成树--kruskal)
- oc语言的学习