В качестве альтернативы можно использовать lookaround, если используемая вами разновидность регулярного выражения (которую вы не указали) ее поддерживает. .NET, Python do, Ruby и JavaScript не (полностью), например:
(?<=foo).+(?=bar)
соответствует любому количеству символов, если им предшествует foo
, за которым следует bar
.