I currently have a regular expression: REGEXP_EXTRACT_ALL(data, r'\"createdAt\"\:(.*?)\}')
Which finds "createAt":" and outputs anything past that text and up until the next "}".
Example output: {"_seconds":1620327345,"_nanoseconds":155071000
This works BUT I need the last } to be included in the output.
Preferred Output: {"_seconds":1620327345,"_nanoseconds":155071000}
How will I need to change my regular expression so that the } is included in the output?
CodePudding user response:
You need to include the } into the capturing group:
REGEXP_EXTRACT_ALL(data, r'"createdAt":(.*?})')
Besides, you can make it a bit more efficient with a negated character class:
REGEXP_EXTRACT_ALL(data, r'"createdAt":([^}]*})')
With [^}]*, you match any zero or more chars other than } as many times as possible.
Also, if you chose single quotation marks as a string literal delimiter char, you need not escape double quotation marks (they are not special regex metacharacters.) Note } is not a special character if there is no paired { with a number (or {<number>,<number>) in front of it.
