Java regex split text (both the delimiter and the order may be unknown) -


i'm trying split text "name:jack,berk,john;teacher:smith,jan;course:math;" , hope result contains 3 sub-strings (or less, depends on appearance of 'name' 'teacher' 'course'), is:

  • "name:jack,berk,john;"
  • "teacher:smith,jan;"
  • "course:math;"

but appearance order of identifiers 'teacher,name,course' not fixed, can 'course ,name, teacher' , can lack 1 or two, has 'name' identifiers.

also delimiter between identifiers not fixed, in example ';',but can '、\\s,'.

i have tried many times not works.

string str = "name:jack,berk,john;teacher:smith,jan;course:math; str = str.replaceall("(.*)(.)(name|teacher|course)(.*)(.)(name|teacher|course)(.*)", "$1--$3$4--$6$7"); system.out.println(str); 

any suggestions appreciated.

edit: regex without looking specific delimiter.

rather splitting string match on regex:

(name|teacher|course):(.+?)(?=\w*(?:name|teacher|course|$)) 

working demo

code:

pattern p = pattern.compile("(name|teacher|course):(.+?)(?=\\w*(?:name|teacher|course|$))"); matcher m = p.matcher(name:jack,berk,john;teacher:smith,jan;course:math;); while (m.find()) {    system.out.println(m.group(1) + " :: " + m.group[2]); } 

Comments

Popular posts from this blog

database - VFP Grid + SQL server 2008 - grid not showing correctly -

jquery - Set jPicker field to empty value -

.htaccess - htaccess convert request to clean url and add slash at the end of the url -