简体   繁体   中英

Regex to get parts of a string

all i am struggling to get sections of a string with regex without using Split or any other similar function here is my scenario:

I have this text U:BCCNT.3;GO which i want to get the different sections divided but the symbols in the middle I have managed to get the first one with this regex /(.+):/.exec(value) this gives me the first word till the colon(:) and these are the different variations of the value

Second section BCCNT

BCCNT.3;GO -> without the U: so the string might also contain no colon so for the second section the logic would be any text that is between : and . or any text ending with . and nothing infront any text that is between : and . or any text ending with . and nothing infront

Third section .3 -> any text starting with a . and ending with nothing or anytext staring with a . and ending with a ; semicolon any text starting with a . and ending with nothing or anytext staring with a . and ending with a ; semicolon

Fourth section ;GO -> any text starting with a ; and ending with nothing any text starting with a ; and ending with nothing

EDIT and preferably on separate variables like

const sectionOne = regex.exec(value);
const sectionTwo = regex.exec(value);
const sectionThree = regex.exec(value);
const sectionFour = regex.exec(value);

and which ever value doesnt match the pattern the variable would just be undefined or null or any empty string

Here is a regex approach using 4 separate optional capture groups for each possible component:

 var input = "U:BCCNT.3;GO"; var re = /^([^:]+:)?([^.]+)?(\\.[^;]+)?(;.*)?$/g; var m; m = re.exec(input); if (m) { console.log(m[1], m[2], m[3], m[4]); }

Something like

/^(?:([^:]*):)?([^.]*)\.(?:([^;]*);(.*))?/

For example:

 const s = 'U:BCCNT.3;GO'; const m = s.match(/^(?:([^:]*):)?([^.]*)\\.(?:([^;]*);(.*))?/); console.log(m);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM