亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Re模塊中的Python正則表達式是否支持單詞邊界(\b)?

Re模塊中的Python正則表達式是否支持單詞邊界(\b)?

Re模塊中的Python正則表達式是否支持單詞邊界(\b)?在嘗試更多地了解正則表達式的同時,一個教程建議您可以使用\b匹配一個詞的邊界。但是,Python解釋器中的以下代碼段不像預期的那樣工作:>>> x = 'one two three' >>> y = re.search("\btwo\b", x)如果匹配的話,它應該是一個Match對象,但是它是None.是\bPython中不支持的表達式,還是我使用它的錯誤?
查看完整描述

3 回答

?
陪伴而非守候

TA貢獻1757條經驗 獲得超8個贊

你為什么不試試

word = 'two're.compile(r'\b%s\b' % word, re.I)

產出:

>>> word = 'two'>>> k = re.compile(r'\b%s\b' % word, re.I)>>> x = 'one two three'>>> y = k.search( x)>>> y<_sre.SRE_Match object at 0x100418850>

還忘了提到,您應該在代碼中使用原始字符串。

>>> x = 'one two three'>>> y = re.search(r"\btwo\b", x)>>> y<_sre.SRE_Match object at 0x100418a58>>>>


查看完整回答
反對 回復 2019-07-03
?
鳳凰求蠱

TA貢獻1825條經驗 獲得超4個贊

這將起作用:re.search(r"\btwo\b", x)

當你寫"\b"在Python中,它只有一個字符:"\x08"..要么像這樣避開反斜杠:

"\\b"

或者編寫如下原始字符串:

r"\b"


查看完整回答
反對 回復 2019-07-03
?
青春有我

TA貢獻1784條經驗 獲得超8個贊

只是為了明確地解釋為什么 re.search("\btwo\b", x)不起作用,是因為\b在Python中,字符串是Backspace字符的縮寫。

print("foo\bbar")fobar

所以模式"\btwo\b"正在尋找一個后置空間,然后是two,后面是另一個后臺空間,您在其中搜索的字符串(x = 'one two three')沒有。

允許re.search(或compile)解釋序列\b作為一個單詞邊界,可以避開反斜杠("\\btwo\\b")或使用原始字符串創建模式(r"\btwo\b").


查看完整回答
反對 回復 2019-07-03
  • 3 回答
  • 0 關注
  • 1789 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號