我正在尝试编写一个正则表达式来选择下划线之间的所有字符。我最终得到_([^_]+)_但它不匹配所有组,字符串: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
提交
取消