2010-03-02 4 views
0

MATLAB의 REGEXP 함수에서 표현식 문자열 1이 얼마나 오래 사용할 수 있는지 궁금합니다. 예를 들어 'abc|defg|hij|...'과 같이 일치시킬 단어를 여러 개 나열 할 수 있습니다.정규식 (MATLAB)의 최대 표현 문자열 길이

약 500 단어 (~ 3K 문자)로 잘 처리되었지만 매우 큰 목록 (> 300K)의 MATLAB은 오류 로그없이 충돌했습니다. 누구나 한계에 대해 알고 있습니까? 표현식 구문에 따라 다를 수 있습니까?

나는 셀 배열을 사용할 수 있지만이 경우에는 임의의 수의 문자열을 사용할 수 없다는 것을 알고 있습니다. 어쨌든, 나는 대안을 필요로하지 않는다, 다만 한계는 만족시킨다.

답변

1

이것은 메모리 제한 때문에 발생할 수 있으며 java.opts를 사용하여 Java 메모리를 늘릴 수 있습니다. java.opts 및 matlab를 검색하여 작업 메모리 크기를 늘리는 방법을 찾으십시오.

비록 이것이 정규 표현식의 의도 된 사용이라고 생각하지 않습니다.

최대 길이는 플랫폼에 따라 다릅니다. 자세한 내용은 here을 참조하십시오.

+1

동의. * 이론적 인 * 제한은 정규 표현식을 포함하는 문자열의 크기 일 가능성이 크지 만 문제는 아닙니다. 이런 식의 정규 표현식을 사용하는 것은 정말 좋은 생각입니다. –

+0

32 비트 XP가있는 아주 오래된 컴퓨터에서 5e7 문자열 (메모리의 100MB)을 만들 수 있습니다. regexp가 표현 문자열 ~ 1e6 문자 (문자열이 메모리에 성공적으로 저장된 후)와 충돌했지만. 그래서 문자열처럼 보일뿐 아니라 실행 중에 regexp 구현, 어떻게 메모리를 사용하는지 보자. 나는 regexp, 학문적 인 관심사의 최상 사용이 아니다는 것을 동의한다. – yuk