excel - Split string in VBA using RegEx - Not Splitting -
really new @ vba/regex have regex function defined
public function splitline(line string) string() dim regex object set regex = createobject("vbscript.regexp") regex.ignorecase = true regex.global = true 'this pattern matches commas outside quotes 'pattern = ",(?=([^"]"[^"]")(?![^"]"))" regex.pattern = ",(?=([^" & chr(34) & "]" & chr(34) & "[^" & chr(34) & "]" & chr(34) & ")(?![^" & chr(34) & "]" & chr(34) & "))" splitline = split(regex.replace(line, ";"), ";") end function
and reference with:
dim resp string: resp = http.responsetext dim lines variant: lines = split(resp, vblf) dim sline string dim values variant = 0 ubound(lines) sline = lines(i) values = splitline(sline) stop next
this isn't curerntly throwing error - there no split happening.
thanks help!
the local article on regex pick commas outside of quotes has different pattern strings appear successful.
'pattern = /^([^"]|"[^"]*")*?(,)/ regex.pattern = "/^([^" & chr(34) & "]|" & chr(34) & "[^" & chr(34) & "]*" & chr(34) & ")*?(,)/" 'pattern = /(,)(?=(?:[^"]|"[^"]*")*$)/ regex.pattern = "/(,)(?=(?:[^" & chr(34) & "]|" & chr(34) & "[^" & chr(34) & "]*" & chr(34) & ")*$)/"
i suggest less common delimiter split on. chrw(8203) (a zero-length unicode space) common delimiter atoms , like.
splitline = split(regex.replace(line, chrw(8203)), chrw(8203))
i've culled working function using yet regex pattern
function stripcommasoutsideofquotedstring(rng range) dim strpattern string dim regex object set regex = createobject("vbscript.regexp") 'pattern is: ,(?=([^"]*"[^"]*")*(?![^"]*")) strpattern = ",(?=([^" & chr(34) & "]*" & chr(34) & "[^" & chr(34) & "]*" & chr(34) & ")*(?![^" & chr(34) & "]*" & chr(34) & "))" 'debug.print strpattern regex .global = true .pattern = strpattern end stripcommasoutsideofquotedstring = split(regex.replace(rng.value, chrw(8203)), chrw(8203)) end function
the above function can array-entered series of columns receive split values.
Comments
Post a Comment