Home > Blockchain >  Regular expression to match first element
Regular expression to match first element

Time:08-29

My data strings can be in this format

1.

{"name":"Lokesh","accountNumber":"3044444444","city":"New York"}
"{\"name\":\"Lokesh\",\"accountNumber\":\"3044444444\",\"city\":\"New York\"}"
"\"{\\\"name\\\":\\\"Lokesh\\\",\\\"accountNumber\\\":\\\"3044444444\\\",\\\"city\\\":\\\"New York\\\"}\""

Basically, a JSON object that can be stringified any number of times or it can be similar looking string for example "hello"="world"

I have written regex as

/\\*".*account.*\\*":\\*"(.*?)\\*".*/g

But it matches New YorK

But I want to match the first element i.e. 3044444444. How can I achieve this?

CodePudding user response:

Use: \\*".*account[^,]*\\*":\\*"((.*?)\\*)".* see: https://regex101.com/r/vb2rx4/1

Then only thing changed is that i replaced . by [^,]. A . will match anything, and [^,] will match anything but a comma.

CodePudding user response:

You may use this regex with a negated character class:

"account[^"\\]*\\*":\\*"([^"\\]*)

RegEx Demo

RegEx Breakup:

  • "account: Match "account
  • [^"\\]*: Match 0 or more of any char that is not " and \
  • \\*":\\*": Match ":" with optional \s
  • ([^"\\]*): Our match, which is 0 or more of any char that is not " and \, captured in group #1
  • Related