안드로이드 애플 리케이션에서 나는 2 regEx의 문자열을 구문 분석하는 데 사용하는 유틸리티 클래스가 있습니다. 정적 이니셜 라이저에서 두 패턴을 컴파일하여 한 번만 컴파일 한 다음 활동에서 파싱 메소드를 정적으로 사용할 수 있습니다.Android 앱에서 java.util.regex 사용 -이 문제가 있습니까?
클래스가 액세스되어로드되고 정적 초기화 프로그램이 패턴을 컴파일 할 때 UI가 패턴을 컴파일하는 동안 MINUTE에 가깝게 정지한다는 점을 제외하고는 정상적으로 작동합니다! 처음 후에는 parseString()에 대한 모든 후속 호출에서 작동합니다.
내가 사용하고있는 regEx는 다소 큰 847 자이지만 일반적인 java webapp에서는 번개처럼 빠르게 발생합니다. 지금까지 1.5 AVD로 에뮬레이터에서만 이것을 테스트하고 있습니다.
이 문제는 에뮬레이터 문제 일 수 있습니까? 아니면이 패턴이 너무 오래 컴파일되는 다른 이유가있을 수 있습니까?
private static final String exp1 = "(insertratherlong---847character--regexhere)";
private static Pattern regex1 = null;
private static final String newLineAndTagsExp = "[<>\\s]";
private static Pattern regexNewLineAndTags = null;
static {
regex1 = Pattern.compile(exp1, Pattern.CASE_INSENSITIVE);
regexNewLineAndTags = Pattern.compile(newLineAndTagsExp);
}
public static String parseString(CharSequence inputStr) {
String replacementStr = "replaceMentText";
String resultString = "none";
try {
Matcher regexMatcher = regex1.matcher(inputStr);
try {
resultString = regexMatcher.replaceAll(replacementStr);
} catch (IllegalArgumentException ex) {
} catch (IndexOutOfBoundsException ex) {
}
} catch (PatternSyntaxException ex) {
}
return resultString;
}
java.util.regex.Pattern 클래스는 ICU4C를 사용하고 있습니까? 그렇다면 \ U0002A700- \ U0002B73F (또는 유사한 \ U 표현식)이 작동하지 않는 이유는 무엇입니까? –
예, 모든 패턴 및 매처에는 icu4c에서 제공하는 원시 피어가 있습니다. 특정 버그가있는 경우 재현 가능한 테스트 케이스로 버그 추적기에보고하십시오. –