| I thought I was pretty good at regex, but I could never have written this one and had to consult both `man grep` and regex101.com. Explanations for the beginner and intermediate regex and grep user: `-o`: Only return the match, instead of the entire line `-P`: use Perl compatible regex `-m` max-count, Stop reading a file after NUM matching lines. And now for the regex: `name:`: find the exact match `\s*"`: Zero or more spaces leading up to and including an double quote `\K`: This was the kicker for me. "resets the starting point of the reported match. Any previously consumed characters are no longer included in the final match" - basically tells the regex engine that the characters _before_ `\K` needs to be there in order to form a match, but it should only return the characters _after_ `\K` as the match. This is super handy! Is there a "reverse \K"? `[^"]+`: One or more characters that are not a double quote. This basically means "Find the line that has a key called "name" and return all the characters after the first double quote and until the last double quote" |
What do you mean by "reverse \K"? Are you aware of lookarounds? Perhaps you meant positive lookahead?
[0] https://learnbyexample.github.io/learn_gnugrep_ripgrep/intro...