You can do this with positive lookbehind and lookaheads. These check for the existence of text matching a pattern before or after a point, without including and consuming that text in the match.
The equivalent to your expression would be
(?<=[0-9]+\t)[^\t]+(?=\t[0-9]+)
Note that this does not necessarily give the same results as your original expression. Look at the following:
Input string 0\t one \t1\t two \t2\t three \t3
Groups in original version 11111111111 2222222222222
Groups in new version ...11111... ...3333333...
. = checked but not consumed ...22222...
Observe how, since the loohahead and lookbehind groups do not consume/match the 1
and 2
, only check they are there, they allow the value " two "
to be matched, where your original expression did not. Whether you want this or not is up to you.