Home > database >  How to include numeric characters like time in regex pattern while reading data from csv file?
How to include numeric characters like time in regex pattern while reading data from csv file?

Time:01-07

I am reading data from csv file, where Iam able to read the data even data has comma(,) in it using regex below, but unable to include time in that pattern ? can someone suggest how to match that.

Regex : (".*?"|[^",\s] )(?=\s*,|\s*$)

I need to include 2:00:00 AM as well

enter image description here

CodePudding user response:

We can try the following regex match all approach in JavaScript:

var input = '"23,42",ewtwe, sf,asf,2:00:00 AM,3;8;,3;8;';
var items = input.match(/".*?"|[^,\s] (?:\s [^,\s] )*/g);
console.log(items);

The regex pattern used here says to match:

  • ".*?" a doubly quoted term
  • | OR
  • [^,\s] a non whitespace term excluding commas
  • (?:\s [^,\s] )* optionally followed by whitespace and more similar terms

Note that we search eagerly first for doubly quoted terms, and only that failing do we use comma as a delimiter.

CodePudding user response:

We can add this part (?: \w )? after [^",\s] .

[^",\s] match one or more character except ", , and \s.

(?: \w )? followed by an optional (space and \w one or more word character). the (?: is the opening of the non-capturing group and the last ) is the closing bracket of it. The ? after the closing bracket makes the whole group optional.

(".*?"|[^",\s] (?: \w )?)(?=\s*,|\s*$)

See regex demo

  • Related