Given a string, such as:
example string with an intended nested string to match.
How to isolate a substring knowing only a prefix and suffix for it, e.g. between intended
and to match
?
Given a string, such as:
example string with an intended nested string to match.
How to isolate a substring knowing only a prefix and suffix for it, e.g. between intended
and to match
?
2 Answers
Reset to default 14Use regular expressions with non-capturing parentheses, like so:
string = 'example string with an intended nested string to match.';
regexp = /(?:intended)(.*)(?:to match)/;
firstMatch = regexp.exec(string)[1]; // " nested string "
The question mark has several uses in regular expressions, the parentheses question mark colon form (?:
more regex)
is the non-capturing parentheses.
See MDN for more details of exec(), string.match(), and regular expressions.
Look behind (?<=
...)
and look ahead (?=
...)
can be used to the same effect -- they are used to match but are not included in the result, the term for that behavior is referred to as "not consuming"
RegExp Lookahead Lookbehind
/(?<=intended).+(?=to match)/g;
RegEx101
const str = `example string with an intended nested string to match.`;
const rgx = /(?<=intended).+(?=to match)/g;
const hit = str.match(rgx);
console.log(hit[0]);