正则表达式选择下划线之间的所有字符

时间:2018-08-12 04:31:16

标签: java regex python-3.x

我正在尝试编写正则表达式以选择下划线之间的所有字符。我以_([^_]+)_结尾,但它与所有组都不匹配,

字符串:abc_bca_vag_hag_bag 输出:bca vag hag

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:4)

我使用了split函数,并选择除了第一个和最后一个元素之外的所有元素:

st = 'abc_bca_vag_hag_bag'
lis = st.split('_')[1:-1]
# output  ['bca', 'vag', 'hag']

答案 1 :(得分:3)

您的正则表达式将匹配下划线,并且一旦匹配的内容将不再匹配。因此,在匹配_bca_之后,看不到_bca_中的最后一个下划线实际上与vag之前的下划线相同。它认为vag之前没有下划线,因为它已经与上一次匹配中的下划线匹配。

您需要使用 lookaheads lookbehinds

(?<=_)[^_]+(?=_)

这些将与下划线不匹配。他们只会“看”,看看是否有下划线。

Demo