2011-09-22 3 views
-2

패턴 기호 집합을 가져 오는 방법이 있습니까?패턴 기호의 문자 집합

예를 들어 정규식이 [az]+[A-Z]*입니다. 그러면 첫 번째 기호의 기호 집합은 az입니다. 그러면 두 번째 기호의 기호 집합은 az입니다. 그러면 세 번째 기호의 기호 집합은 az입니다. ....

과제는 다음과 같습니다. 패턴과 문자열이 있습니다. 이제 문자열이 패턴과 일치하는 문자열 중 하나와 같은 문자로 시작하는지 여부를 알고 싶습니다.

UPDATE :

예를 들어, 나는 정규 표현식 [az]\\:[A-Z]* 있습니다. 그러면 첫 번째 기호의 기호 집합은 az입니다. 그러면 두 번째 기호의 기호 집합은 :입니다. 그러면 세 번째 기호의 기호 집합은 A-Z입니다. 그러면 네 번째 기호의 기호 집합은 A-Z입니다. ....

당신이 일치하는이 문자열로 지정된 오프셋 (offset)와 일치 수있는 문자 집합을 인수로 정규 표현식을 받아 반환하는 함수를 요구하는 것처럼 소리
+0

기능 요구 사항은 무엇입니까? 그것은 당신의 질문에서 완전히 명확하지 않습니다. 대소 문자를 구분하지 않으시겠습니까? – BalusC

+0

기능 요구 사항은 무엇입니까? 무엇의 기능? 대소 문자를 구분하지 않으시겠습니까? 예 – itun

+0

원하는 입출력의 몇 가지 예조차도 함께 모을 수 있습니다. :-) – corsiKa

답변

0

:

Set<Character> getSymbols(String regEx, int offset); 

이것은 사소한 일입니다.

하여 예를 사용하면 :

getSymbols("[az]\\:[A-Z]*", 1) 

getSymbols("[az]\\:[A-Z]*", 2) 

반환한다 [Z '가'A '를] 반환한다 [' ']

getSymbols("[az]\\:[A-Z]*", 3) 

정상적으로 반환 [ 'A', 'B', 'C', ..... 'Y', 'Z']

그러나 이것은 사소한 의견입니다. 어떤 입력이 된 경우 :

getSymbols("[abc]*FRED[xzy]*", 5) 

이제 "ABC"문자는 FRED를 진행할 수 있으며,이 같은 결과 집합으로 이어지는, 다른 모든 이동 것이라는 사실을 감안해야한다 :

1: ['a', 'b', 'c', 'F'] 
2: ['a', 'b', 'c', 'F', 'R'] 
3: ['a', 'b', 'c', 'F', 'R', 'E'] 
4: ['a', 'b', 'c', 'F', 'R', 'E', 'D'] 
5: ['a', 'b', 'c', 'x', 'y', 'z', 'F', 'R', 'E', 'D'] 

정규식을 구문 분석해야하는 코드는 모든 이스케이프 문자 (공백 등의 경우 \ w)로 많은 표현력을 갖고 출력 집합을 작성하는 재귀 알고리즘이 필요합니다.

다음 질문은 "당신은 정말로 어떤 문제를 해결하려고합니까?"입니다.

+0

집합 getSymbols (String regEx, int offset); 어떤 클래스 또는 라이브러리에이 함수가 포함되어 있습니까? – itun