regex - split word by special character -
i want find pairs of words separated ":" let me explain examples:
aa:bbb
(output) match1=> aa; bbb
aa: bbb ccc
(output) match1=> aa; bbb ccc
aaa: bbbbb ccc ddd: eeee
(output)match1=> aaa; bbbb ccc (output)match2=> ddd; eee
i found 2 regex:
1)\s*([a-z0-9]+)+\s*\:\s*([a-z0-9]+)+
2)(.*)\:(.+?)(?=[a-z0-9]*\s*:)
the first found occurance not work in case example(word separated white space bbbbb ccc):
aaa: bbbbb ccc
but work in case:
aa: bbb ccc:dd eeee:fff
the second not found occurance work in case:
aaa: bbbbb ccc
to answer regex despite may not best way it:
(\w+ *):([\w ]+)(?!\w* *:)
i make 2 capture groups, 1 before :
, 1 after.
to sure second capture group doesn't take "key" of next 1 use negative lookahead ensure can't match format of key after (any word or space character before :)
to match keys use \w+ *
@ lest 1 char followed or not 1 or more space , negative lookahead \w* *:
sure can't match single :
, nor a:
or a :
for values use character class, word character (\w
a-za-z0-9_
) or space @ least once.
Comments
Post a Comment