Skip to content Skip to sidebar Skip to footer

RegEx To Extract Array Of Strings In Javascript Using Match()

I'm trying to use string.match() in javascript with a regular expression to extract an array of strings. Here is a sample string: CREATE TABLE 'listings' ( 'listing_id'

Solution 1:

Use

/(?<=CREATE TABLE[^(]*\([^()]*)"([^"]*)"/g

See proof. The expression will match strings between double quotes preceded with CREATE TABLE ( and any strings other than parentheses.

JavaScript:

const regex = /(?<=CREATE TABLE[^(]*\([^()]*)"([^"]*)"/g;
const str = `CREATE TABLE "listings" (
        "listing_id"    INTEGER UNIQUE,
        "state" TEXT,
        "title" TEXT,
        "description"   TEXT,
        "price" TEXT,
        "currency_code" TEXT,
        "url"   TEXT,
        PRIMARY KEY("listing_id")`;
const matches = str.matchAll(regex)
console.log(Array.from(matches, x => x[1]));

Solution 2:

Adding Parentheses around the actual string content solves it: (?<!\()(\")(.+?)(\")(?!\ \(), matching group 2.

Live example: http://regexr.com/58m4i


Solution 3:

Solution without having to use matchAll

If you need to match CREATE TABLE and then get the content between double quotes at the start of line:

ip_str.match(/(?<=CREATE TABLE.*^\s*")[^"]+(?=")/gms)

If CREATE TABLE doesn't need to be matched:

ip_str.match(/(?<=^\s*")[^"]+(?=")/gm)

The main trick here is to use m flag to anchor the search to start of line.


Post a Comment for "RegEx To Extract Array Of Strings In Javascript Using Match()"