我正在嘗試編寫一個正則表達式來選擇下劃線之間的所有字符。我最終得到_([^_]+)_但它不匹配所有組,字符串:abc_bca_vag_hag_bag 輸出:bca vag hag有人可以幫忙嗎?
2 回答

繁星點點滴滴
TA貢獻1803條經驗 獲得超3個贊
您的正則表達式將匹配下劃線,匹配一次的內容將不會再次匹配。所以匹配后_bca_
,它看不到最后一個下劃線_bca_
實際上和之前的下劃線是一樣的vag
。它認為vag
前面沒有下劃線,因為它已經匹配了上一次匹配中它前面的下劃線。
您需要使用lookaheads和lookbehinds:
(?<=_)[^_]+(?=_)
這些將與下劃線不匹配。他們只會“看”看是否有下劃線。

天涯盡頭無女友
TA貢獻1831條經驗 獲得超9個贊
我使用 split 功能并選擇除第一個和最后一個之外的每個元素:
st = 'abc_bca_vag_hag_bag'
lis = st.split('_')[1:-1]
# output ['bca', 'vag', 'hag']
添加回答
舉報
0/150
提交
取消