Java 正则表达式选择下划线之间的所有字符
我试图编写一个正则表达式来选择下划线之间的所有字符。我最终得到了Java 正则表达式选择下划线之间的所有字符,java,regex,python-3.x,Java,Regex,Python 3.x,我试图编写一个正则表达式来选择下划线之间的所有字符。我最终得到了([^\u]+)\ uu,但它并不匹配所有的组 字符串:abc\u bca\u vag\u hag\u bag 输出:bca-vag-hag 有人能帮忙吗?我使用了拆分功能,并选择了除第一个和最后一个之外的所有元素: st = 'abc_bca_vag_hag_bag' lis = st.split('_')[1:-1] # output ['bca', 'vag', 'hag'] 您的正则表达式将匹配下划线,一次匹配的内容将
([^\u]+)\ uu
,但它并不匹配所有的组
字符串:abc\u bca\u vag\u hag\u bag
输出:bca-vag-hag
有人能帮忙吗?我使用了拆分功能,并选择了除第一个和最后一个之外的所有元素:
st = 'abc_bca_vag_hag_bag'
lis = st.split('_')[1:-1]
# output ['bca', 'vag', 'hag']
您的正则表达式将匹配下划线,一次匹配的内容将不会再次匹配。因此,在匹配\u bca\u
之后,它看不到\u bca\u
中的最后一个下划线实际上与vag
之前的下划线相同。它认为vag
前面没有下划线,因为它在上一次匹配中已经匹配了它前面的下划线
您需要使用lookaheads和lookbehinds:
(?您希望使用Java或Python获得答案,还是两者都可以?
(?<=_)[^_]+(?=_)