python re $匹配字符串结尾的一个问题

Python017

python re $匹配字符串结尾的一个问题,第1张

真是个有意思的问题。

help(re) 可以看到

'$'

Matches the end of the string or just before the newline at the end of the string.

\Z

Matches only at the end of the string.

重点是 just before the newline at the end of the string

re模块是python独有的匹配字符串的模块,该模块中提供的很多功能是基于正则表达式实现的,

而正则表达式是对字符串进行模糊匹配,提取自己需要的字符串部分,他对所有的语言都通用。

1、字符

2、字符集

3、量词

贪婪模式:总是尝试匹配尽可能多的字符

非贪婪则相反,总是尝试匹配尽可能少的字符。

{0,} 匹配前一个字符 0 或多次,等同于 * 元字符

{+,} 匹配前一个字符 1 次或无限次,等同于 + 元字符

{0,1 }匹配前一个字符 0 次或 1 次,等同于 ? 元字符

如果 () 后面跟的是特殊元字符如 (adc)* 那么*控制的前导字符就是 () 里的整体内容,不再是前导一个字符

4、特殊分组用法表:只对正则函数返回对象的有用

5、断言

从断言的表达形式可以看出,它用的就是分组符号,只不过开头都加了一个问号,这个问号就是在说这是一个非捕获组,这个组没有编号,不能用来后向引用,只能当做断言。

匹配 <title>xxx</title>中 xxx : (?<=<title>).*(?=</title>)

自己理解就是:

5、例子

(1)非

^(?!.*200).*$ ,只匹配200

^(?!.*[200|400]).*$ ,只匹配200和400

[^a-z] 反取,不含a-z字母的

(2) \u4e00-\u9fa5 中文

(3) r"\b([\u4e00-\u9fa5]\s?[\u4e00-\u9fa5]+)\b" # 小 明 匹配这种单字中间有空格的

compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象,供 match() 和 search() 这两个函数使用

match 尝试从字符串的 起始位置 匹配一个模式,如果不是起始位置匹配成功的话,返回none。

search 扫描 整个字符串 并返回 第一个成功 的匹配。

re.match与re.search的区别:

正则表达式替换函数

替换匹配成功的指定位置字符串,并且返回替换次数,可以用两个变量分别接受

(2) 两个字符以上切割,放在 [ ] 中(不保留分隔符):

(3) 使用 ( ) 捕获分组(保留分割符):

在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。

注意: match 和 search 是匹配一次 ,findall 匹配所有。

用法:

注意1:一旦匹配成,再次匹配,是从前一次匹配成功的,后面一位开始的,也可以理解为匹配成功的字符串,不在参与下次匹配

注意2:如果没写匹配规则,也就是空规则,返回的是一个比原始字符串多一位的,空字符串列表

注意3:正则匹配到空字符的情况,如果规则里只有一个组,而组后面是 * 就表示组里的内容可以是 0 个或者多过,这样组里就有了两个意思:

一个意思是匹配组里的内容,

二个意思是匹配组里 0 内容(即是空白)

所以尽量避免用 * 否则会有可能匹配出空字符串

正则表达式,返回类型为表达式对象的

如:<_sre.SRE_Match objectspan=(6, 7), match='a'>

返回对象的,需要用正则方法取字符串,