Home > other >  Regular expression for first instance of a quoted string
Regular expression for first instance of a quoted string

Time:11-12

What regex do I use to select the first instance of a string in single quotes when the line contains multiple comma separated single quote values ?

There could be multiple lines and I want to match first instance on each line.

‘(.*?)’ selects all instances so the lazy quantified is not working exactly as I expected

Here’s an example of what I’m seeing.

https://regexr.com/727sp

CodePudding user response:

Remove the global modifer. Click on Flags and remove global, so it's /'(.*?)'/ instead of /'(.*?)'/g

CodePudding user response:

You can use

^.*?'\K.*?(?=')

See the regex demo.

Details:

  • ^ - start of string
  • .*? - zero or more chars other than line break chars as few as possible
  • ' - a ' char
  • \K - match reset operator that discards all text in the match memory buffer
  • .*? - zero or more chars other than line break chars as few as possible
  • (?=') - a positive lookahead that requires a ' to appear immediately to the right of the current location

Probably a bit more efficient variation of the same regex will be

^[^'\n\r]*'\K[^'\n\r]*(?=')

where [^'\n\r] finds any char other than ' and LF/CR chars.

  • Related