code: public int countMatches() {
  		if (null != this.positions && this.positions.isPresent()) {
  			return this.positions.get().size();
  		}
  		
  		if (Strs.isEmpty(target4Betn)) {
  			return 0;
  		}
  		
  		if (!region.isPresent()) {
  			return 0;
  		}
  		
  		if (isEqual(region.get()[0], region.get()[1])) {
  			int matchCount = count(target4Betn, region.get()[1]);
  			
  			if (this.matchWay.get() == 'R' 
  					|| this.matchWay.get() == 'L') {
  				return matchCount;
  			}
  			
  			matchCount = (matchCount % 2 == 0) ? matchCount : (matchCount - 1);
  			return matchCount / 2;
  		}
  		
  		return Math.min(count(target4Betn, region.get()[0]), count(target4Betn, region.get()[1]));
  	}
docs: Returns the number of matching string found in delegate string
  
  @return