python学习之十

正则表达式

是一种用于匹配字符串的模式,它也是字符串。有一种匹配的模板在搜索的字符串中有没有出现,或者出现了多少次等这些感觉。匹配了几次这种感觉。

+:代表+之前的字符最少出现一次。abc+则abcc,abcccc这些都可以匹配。 >=1。

*:代表*之前的字符可以不出现,也可以出现一次和无数次。abc*d,则abd,abcd,abccd,abcccd可以匹配。>=0。

?:? 问号代表前面的字符最多出现一次(0次或1次)。abc?d,则abd,abcd这两种才可以匹配。<=1。

正则表达式的组件可以是单个的字符、字符集合、字符范围、字符间的选择或者所有这些组件的任意组合。

正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为"元字符")组成的文字模式。模式描述在搜索文本时要匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。最后输出所搜索的字符串中模板有的那些字符。

常用普通字符

普通字符包括没有显式指定为元字符的所有可打印和不可打印字符。这包括所有大写和小写字母、所有数字、所有标点符号和一些其他符号。

[abc]:代表匹配[ ]里面有的所有字符。

[^abc]:代表匹配除了[ ]里的所有字符。

[A-Z]:这代表一个范围,表示可以匹配[ ]范围中的所有大写字符。

. :匹配除换行符(\n、\r)之外的任何单个字符,相等于 [^\n\r]。

[\s\S]:匹配所有的字符,\s 是匹配所有空白符,包括换行,\S 非空白符,不包括换行。

\w:匹配字母、数字、下划线。等价于 [A-Za-z0-9_]

\d :匹配数字。

特殊字符

所谓特殊字符,就是一些有特殊含义的字符,本身具有一些特殊意义,如上述的?,*等。如果要查找字符串中的 * 符号,则需要对 * 进行转义,即在其前加一个 \,ab\*c匹配字符串 ab*c

限定符

限定符用来指定正则表达式的一个给定组件必须要出现多少次才能满足匹配。有 * 或 + 或 ? 或 {n} 或 {n,} 或 {n,m} 共6种。缺省一般只匹配一次。

*,+,?和上述代表的意思一样。

{n}:代表它之前的模板匹配n次。

{n,}:代表它之前的那个模板匹配最少n次。即>=n。

{n,m}:代表它之前的那个模板匹配最少n次最多m次,即>=n,<=m。

定位符

定位符使您能够将正则表达式固定到行首或行尾,使正则表达式从某个位置开始匹配。

^ :匹配输入字符串开始的位置。即从输入字符串的开始位置进行匹配。

$ :匹配输入字符串结尾的位置。即从输入字符串的末尾位置匹配。

\b :匹配一个单词边界。单词边界即是一个单词的开始和末尾,从这两个地方匹配。

\B :非单词边界匹配。

eg:/\bcha/就匹配单词chapter中的前三个单词。

\b 字符的位置是非常重要的。如果它位于要匹配的字符串的开始,它在单词的开始处查找匹配项。如果它位于字符串的结尾,它在单词的结尾处查找匹配项。例如,下面的表达式匹配单词 Chapter 中的字符串 ter,因为它出现在单词边界的前面:/ter\b/

对于 \B 非单词边界运算符,不可以匹配单词的开头或结尾,如果是下面的表达式,就不匹配 Chapter 中的 Cha:/\BCha/

ps:

1、在python中有些时候会在字符串前面加r' ',在字符串赋值的时候 前面加'r'可以防止字符串在时候的时候不被转义。打开文件的时候open(r'c:\....')加r'可以防止路径中出现'\t'的话 \t会被转义。而加了'r'之后'\t'就能保留原有的样子。

2、利用()将可能出现多次的某种匹配组合放在一起,就可以对那种具有某种结构的字符串进行匹配了。如一个串字符串,156-565-5689-88756-33这种你并不能知道数字和-出现的次数的匹配,就需要用括号书写正则表达式。/(\d*-?)*/这样即可代表这种结构。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值