不为别的,只为做一个连自己都羡慕的人

正则表达式 \B 是什么意思? 怎么用?

1.\b 在ASCII字符中代表退格键, 但是 \b 同时也是一个正则表达式的特殊符号
为了让RE编译器把 \b 当做你想匹配的字符串,而非一个退格键,需要用另外一个反斜线进行转义, \\b

2. \b代表字与字中间那个看不见的东西,如

here is a word
那么,这句中有好几个\b, 每个单词的前后都有一个\b.

所以你用 \bhere\b 可以匹配上面这个here,但如果here 不是一个单词,而是一个单词的一部分,如 adheread, 这样的话,用here 可以匹配,用\bhere\b就不能区配了,因为ad后面没有\b. 所以 adhere 中的here 不会被匹配。

总结: \b 就是用在你匹配整个单词的时候。 如果不是整个单词就不匹配。 你想匹配 I 的话,你知道,很多单词里都有I的,但我只想匹配I,就是“我”,这个时候用 \bI\b

\B就是反过来,代表非字间。 类似\d代表数字, \D代表非数字。

3.我在用python用正则匹配的时候,想将内容按词汇进行匹配相应的结果,一直匹配不出来,后面查了一下\b的含义,发现将\b写成\\b就可以匹配出来。

如:

pattern = re.compile('\bI\b|\bII\b|\bIII\b|\bIV\b|\bV\b|\bVI\b|\bVII\b|\bVIII\b|\bIX\b')
        print(pattern)
        print(pattern.findall(keya["name"]))
        if pattern.findall(keya["name"]):
            data.append(keya)

这样写,匹配出来的结果为空,当写成这样子的时候:

  pattern = re.compile('\\bI\\b|\\bII\\b|\\bIII\\b|\\bIV\\b|\\bV\\b|\\bVI\\b|\\bVII\\b|\\bVIII\\b|\\bIX\\b')
        print(pattern)
        print(pattern.findall(keya["name"]))
        if pattern.findall(keya["name"]):
            data.append(keya)

匹配结果如下所示:

 

posted @ 2021-09-13 16:37  升级打怪  阅读(7415)  评论(0编辑  收藏  举报