python中關於正則內的b,為什麼使用b時需要用r b,但是w則不需要??求解答

2021-05-06 04:39:09 字數 4358 閱讀 3229

1樓:陽光的雷咩咩

\b在正則中表示單詞間隔。但由於\b在字串裡本身是個轉義,代表退格。r是得到字元本身。也就是說\b這兩個字元。

2樓:匿名使用者

因為\b 有兩種解釋,而\w 只有一種。

\b的兩種解釋是:

'\b', 如果前面不加r, 那麼直譯器認為是轉義字元「退格鍵backspace」;

r'\b', 如果前面加r, 那麼直譯器不會進行轉義,\b 解釋為正規表示式模式中的字串邊界。

而相比於\b, \w 只有第二種解釋,並沒有對應的轉義字元,所以不加r, 也不會出錯。

python正規表示式後向引用的一個例子: \b(\w+)\b\s+\1\b可為什麼我總覺得應該寫

3樓:匿名使用者

\s+表示空白字元,\1引用前面的\w+,即重複前面的單詞

空白字元後面跟著單詞已經隱含了單詞邊界\b,加不加\b匹配的結果都一樣

python正規表示式re.findall(r"\b\w+\b", s)中的r是什麼意思?

4樓:花臂華盛頓

在python的string前面加上『r』, 是為了告訴編譯器這個string是個raw string,不要轉意backslash '\' 。 例如,\n 在raw string中,是兩個字元,\和n, 而不會轉意為換行符。由於正規表示式和 \ 會有衝突,因此,當一個字串使用了正規表示式後,最好在前面加上'r'。

例:r"\n\n\n\n\n\n」

作用:宣告後面的字串是普通字串

特殊字串中含有:轉義字元 \n \t 什麼什麼的用途:一般用在 正規表示式、檔案絕對地址

1,正規表示式:

2、系統路徑

這樣就不用專門的去處理引號之中的特殊字元了

5樓:匿名使用者

python中字串前面加上 r 表示原生字串,

與大多數程式語言相同,正規表示式裡使用"\"作為轉義字元,這就可能造成反斜槓困擾。假如你需要匹配文字中的字元"\",那麼使用程式語言表示的正規表示式裡將需要4個反斜槓"\\\\":前兩個和後兩個分別用於在程式語言裡轉義成反斜槓,轉換成兩個反斜槓後再在正規表示式裡轉義成一個反斜槓。

python裡的原生字串很好地解決了這個問題,這個例子中的正規表示式可以使用r"\\"表示。同樣,匹配一個數字的"\\d"可以寫成r"\d"。有了原生字串,你再也不用擔心是不是漏寫了反斜槓,寫出來的表示式也更直觀。

6樓:匿名使用者

re是python裡的正規表示式模組。findall是其中一個方法,用來按照提供的正規表示式,去匹配文字中的所有符合條件的字串。返回結果是一個包含所有匹配的list。

[1] 就是列表中的[1]啊

7樓:匿名使用者

1,表示匹配的值第一個字串

8樓:鍾桑揚

延伸閱讀:python的 內建函式 和 subprocess 。此文是本系列的第三篇文章了,和之前一樣,內容出自官方文件,但是會有自己的理解,並非單純的翻譯。

所以,如果我理解有誤,歡迎指正,謝謝。

本模組提供了和perl裡的正規表示式類似的功能,不關是正規表示式本身還是被搜尋的字串,都可以是unicode字元,這點不用擔心,python會處理地和ascii字元一樣漂亮。

正規表示式使用反斜杆(\)來轉義特殊字元,使其可以匹配字元本身,而不是指定其他特殊的含義。這可能會和python字面意義上的字串轉義相沖突,這也許有些令人費解。比如,要匹配一個反斜杆本身,你也許要用'\\\\'來做為正規表示式的字串,因為正規表示式要是\\,而字串裡,每個反斜杆都要寫成\\。

你也可以在字串前加上 r 這個字首來避免部分疑惑,因為 r 開頭的python字串是 raw 字串,所以裡面的所有字元都不會被轉義,比如r'\n'這個字串就是一個反斜杆加上一字母n,而'\n'我們知道這是個換行符。因此,上面的'\\\\'你也可以寫成r'\\',這樣,應該就好理解很多了。可以看下面這段:

9樓:匿名使用者

subn後面的中括號表示返回結果的iterable(迭代器),第2項,是說匹配的次數。

這個字串被匹配之後,替換了11次,因為每一個字元都是符合\w的。就都替換為hi了,然後返回了一個元組: ("hihihihihihihihihihihi",11) , 故此[1]就是11.

python正規表示式裡的\b和\b的區別!我看文件了.可是還是不明白! 求高手指點下!

10樓:匿名使用者

\b 匹配一個單詞邊bai界,也就是指du單詞zhi和空格間的位置。例如,「

daoer\b」可以匹配「never」中的版「er」,但不能匹權配「verb」中的「er」。

\b 匹配非單詞邊界。「er\b」能匹配「verb」中的「er」,但不能匹配「never」中的「er」。

維基說的很清楚奧,還有不明白的可以繼續問我...

怎樣用python正則匹配「\b」這兩個字元

11樓:吇爵之吻

\\b  第一個'\'是用來轉義第二個'\',這樣的正則匹配到的是'\b' 這兩個字元

12樓:匿名使用者

對應的正規表示式為r'\\b'

python 中 正則 表示式 的問題 re 模組的應用 \b 和\b的用法 ?求高手**演示!

13樓:匿名使用者

看官方文件:

14樓:匿名使用者

>>> findall(r"\b.\b", "hello,my baby!")

['e', 'l', 'l', 'a', 'b']>>> findall(r"\b.|.\b", "hello,my baby!")

['h', 'o', ',', 'm', 'y', ' ', 'b', 'y', '!']

python 正規表示式 \b

15樓:匿名使用者

\a匹配字串開頭 ,\z匹配字串結尾

\as... 匹配了spam ,\b匹配單詞邊界\b匹配了單詞spam和!之間的虛擬邊界,還有一個點匹配!

python 正規表示式 \bs*.\se\b與\bs\s*?e\b的含**釋

16樓:匿名使用者

實測:>>> res=re.compile(r'\bs*.\se\b')

>>> resl=re.findall(res,txt)

>>> resl

['site', 'sue', 'see', 'sse', 'ssee']

>>> res=re.compile(r'\bs\s*?e\b')

>>> resl=re.findall(res,txt)

>>> resl

['site', 'sue', 'see', 'sse', 'ssee', 'somewhere']

第一個正則:

\b ——單詞分界,

s*——0個或多個s

.——任一字元

\s——任一非空字元

e——字母e

\b——單詞分界

第一個正則是錯誤的,它還可以匹配   "are"、"ss[一個空格]re",等不符合要求的內容。

後者是可以匹配到的。

正規表示式 \b 是什麼意思? 怎麼用?

17樓:灬灬修

補充一點:

\b 在ascii字元中代表退格鍵, 但是 \b 同時也是一個正規表示式的特殊符號

為了讓re編譯器把 \b 當做你想匹配的字串,而非一個退格鍵,需要用另外一個反斜線進行轉義, \\b

18樓:匿名使用者

\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代表非數字。

關於python中sorted方法的key引數

sorted bnthony hall key sortkeyfunc 這個是對字串 bnthony hall 中字元排序,字元排序當然要逐字元比較,傳給比較函式 sortkeyfunc的當然是字串中字元 python中怎麼向sorted 傳遞引數reverse true 1 檢視sorted 函式...

python中關於函式呼叫的問題提

def add pram1,pram2 result pram1 pram2return result def judgeadd a 1 b 3 if a add 1,2 print true elif b add 1,2 print false else return 0 judgeadd 執行這...

關於首字母為b的水果單詞,以b字開頭的水果名稱。除了香蕉之外。

banana 香蕉 baiblackberry黑莓 烏飯果dubilberry 越蔓橘zhi black currant 紅醋栗 blood orange 紅橙 daobeijing flowering crab海棠專果 bitter orange酸橙 bramleys 蘋果 beechnut山毛櫸...