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获得答案,还是两者都可以?
(?<=_)[^_]+(?=_)