code: protected int getLastAcceptedState(CharSequence text, int startIndex){
  		int lastAcceptedState = -1;
  		
  		int p = runAutomaton.getInitialState();
  		int l = text.length();
  		for (int i = startIndex; i < l; i++) {
  			p = runAutomaton.step(p, text.charAt(i));
  			if (p == -1) {
  				if (lastAcceptedState == -1){
  					return -1;
  				}else{
  					break;
  				}
  			}
  			if (runAutomaton.isAccept(p)){
  				lastAcceptedState = p;
  			}
  		}
  		return lastAcceptedState;
  	}
docs: By utilizing the state machine (dk.brics.automaton.RunAutomaton), get the last accepted matching state.
  The matching test starts at specified position.<br>
  利用状态机（dk.brics.automaton.RunAutomaton），取得最后一个匹配到的状态。从指定位置开始进行匹配检查。
  
  @param text				The text to be tested.<br>待进行匹配检查的文本。
  @param startIndex		The position to start matching test.<br>从文本的这个位置开始匹配。
  @return	The state number that matched, return -1 if no expression can match the text.<br>
  匹配到的状态编号，返回-1表示没有与任何一个正则表达式相匹配。