What does the look ahead in Regex do?
I need help deciphering Regex
This came from showdown.js
(\*\*|__) match ** or __ (?=\S) -> look ahead for *one* non-space character? what for? ([^\r]*?\S[*_]*) -> zero or more non-carriage-returns, why newlines \n allowed?, one non-space, zero or more * or _ characters \1 ends with 1st capture: ** or __
I mainly don't get the 2nd & 3rd lines
I'll take a stab at the second part (keep in mind I guess based on the knowledge that this is a JS Markdown parser):
The lookahead assertion (?=\S) is probably there in case someone wants to write two asterisks ** or two underscores __ without wanting to bold the text that comes after it that is separated by a space (see what I did there?).
** This text will not be bold. ** **This text will be bold.**
** This text will not be bold. ** This text will be bold.