Posted By: Anonymous
I need to extract from a string a set of characters which are included between two delimiters, without returning the delimiters themselves.
A simple example should be helpful:
Target: extract the substring between square brackets, without returning the brackets themselves.
This is a test string [more or less]
If I use the following reg. ex.
The match is
[more or less]. I need to get only
more or less (without the brackets).
Is it possible to do it?
Technically that’s using lookaheads and lookbehinds. See Lookahead and Lookbehind Zero-Width Assertions. The pattern consists of:
- is preceded by a [ that is not captured (lookbehind);
- a non-greedy captured group. It’s non-greedy to stop at the first ]; and
- is followed by a ] that is not captured (lookahead).
Alternatively you can just capture what’s between the square brackets:
and return the first captured group instead of the entire match.