java - Find index of first element of last group regex? -



java - Find index of first element of last group regex? -

i have next problem: have collection of strings kinda this:

"01100110011" "11100110010" "10001110000"

could there written regex finds index of first 1 in lastly grouping of ones? using hashmaps , lots of calculations related lastindexof indexof etc. @ point it's starting ridiculous.

it quite simple, compile next regex , search first match matcher.find():

".*(?<!1)(1)"

you can index calling .start(1) on matcher object.

the regex finds lastly 1, not preceded 1 (?<!1), finds first 1 in lastly grouping of consecutive 1's.

sample code:

int startingindexoflastgroup(string str) { pattern p = pattern.compile(".*(?<!1)(1)"); matcher m = p.matcher(str); if (m.find()) { homecoming m.start(1); } // homecoming -1 string without 1 homecoming -1; }

the regex above simple, not nice, since backtracks quite bit. if don't want much backtracking, can utilize next regex:

"(?:[^1]*+(1+))*+"

simply put, search 0 or more of non-1 characters [^1]*+, followed 1 or more of 1's (1+), , such sequence repeated many times possible. since repeated capturing grouping stores index of lastly capture, effective record start index of lastly grouping of consecutive 1's.

java regex string regex-lookarounds

Comments

Popular posts from this blog

Delphi change the assembly code of a running process -

json - Hibernate and Jackson (java.lang.IllegalStateException: Cannot call sendError() after the response has been committed) -

C++ 11 "class" keyword -