을 일치에 실패하면 Match.hitEnd()
알려줍니다 긴 문자열이 일치 할 수 있는지 여부. 또한 입력 시퀀스에서 일치 항목을 찾기 위해 검색 할 영역을 지정할 수 있습니다. 경기가 실패 위치를 일치시킬 수없는 문자열이있는 경우 그래서, 당신은 볼의 접두사를 테스트 할 수 있습니다 :이 클래스의 출력은
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class LastMatch {
private static int indexOfLastMatch(Pattern pattern, String input) {
Matcher matcher = pattern.matcher(input);
for (int i = input.length(); i > 0; --i) {
Matcher region = matcher.region(0, i);
if (region.matches() || region.hitEnd()) {
return i;
}
}
return 0;
}
public static void main(String[] args) {
Pattern pattern = Pattern.compile("[A-Z]+[0-9]+[a-z]+");
String[] samples = {
"*ABC",
"A1b*",
"AB12uv",
"AB12uv*",
"ABCDabc",
"ABC123X"
};
for (String sample : samples) {
int lastMatch = indexOfLastMatch(pattern, sample);
System.out.println(sample + ": last match at " + lastMatch);
}
}
}
입니다
:
*ABC: last match at 0
A1b*: last match at 3
AB12uv: last match at 6
AB12uv*: last match at 6
ABCDabc: last match at 4
ABC123X: last match at 6
이 아마 당신의 최선의 방법입니다 : http://stackoverflow.com/questions/2348694/how-do-you-debug-a-regex –
@Reverend Gonzo : 고마워, 펄의 "use re 'debug'는 내가 찾고있는 것에 가깝다. Java에서 호출 할 수있는 비슷한 것이 좋습니다. – TimK