tiger吴 发表于 2020-7-5 13:55:03

关于正则表达式

>>> p = re.compile('\bclass\b')
>>> print(p.search('no class at all'))
None
不明白为何是这个结果
'\bclass\b'我理解的是相当于'clas'
求解

Twilight6 发表于 2020-7-5 13:56:38

本帖最后由 Twilight6 于 2020-7-5 13:59 编辑



\b 退格符   相当于键盘上的 Backspace 键

所以 '\bclass\b' 相对于在开始时候按一次 Backspace在结尾再次按一次 Backspace

结果就为 'clas' 了~

>>> print('我太丑\b帅了')
我太帅了比如这个例子,就相对于 \b 把丑字删了,果然,这个输出结果我很满意{:10_278:}

tiger吴 发表于 2020-7-5 14:16:14

Twilight6 发表于 2020-7-5 13:56
\b 退格符   相当于键盘上的 Backspace 键

所以 '\bclass\b' 相对于在开始时候按一次 Backspace   ...

不懂搜索结果为何是None
re.search('\bclass\b','no class at all')
相当于re.search('clas','no class at all')?

Twilight6 发表于 2020-7-5 14:23:01

tiger吴 发表于 2020-7-5 14:16
不懂搜索结果为何是None
re.search('\bclass\b','no class at all')
相当于re.search('clas','no class ...



因为匹配过程 \b 也需要匹配只是我们看的时候是不可见的字符 \b ,爬虫也经常有这样的,在网页源码中各种 \t \n

你想匹配到的话,匹配字符也需要对应有 \b:
import re
str0 = 'no \bclass\b at all'
print(re.search('\bclass\b',str0))

sunrise085 发表于 2020-7-5 14:55:49

需要用原字符串,r'\bclass\b'
>>> p=re.compile(r'\bclass\b')
>>> print(p.search('no class at all'))
<re.Match object; span=(3, 8), match='class'>

tiger吴 发表于 2020-7-5 14:59:40

sunrise085 发表于 2020-7-5 14:55
需要用原字符串,r'\bclass\b'

嗯,故意不放的
页: [1]
查看完整版本: 关于正则表达式