2013-07-04 3 views
0

일치 항목의 첫 번째 항목을 식별하는 데 도움이되는 정규식을 만들려고합니다.클래스 일치의 첫 번째 발생까지만 일치하는 정규식

나의 현재 정규식 "(.*)[Cc][Aa][Ss][Ee][^a-zA-Z\\d]*(\\d\\d*)[^a-zA-Z\\d]*(.*)"

내가 뭘하려고 오전 입력 문자열은 숫자 뒤에 특수 문자의 수에 따라 단어 "경우"(대소 문자 구분)를 포함하는 경우 찾는이다; 텍스트의 3 부분을 가져 오려고합니다. 내 입력 문자열이 "RE: FW: case:-1234: there is some description" 입니다.이 정규식을 사용하여 "RE: FW: ", "1234", "there is some description"을 가져올 수 있습니다.

이 괜찮지 만 내 입력 문자열은 그럼 내 정규식 반환, "RE: FW: case:-1234: This is in reference to", "789", "reopening" "RE: FW: case:-1234: This is in reference to case 789 reopening" 인 경우.

내가 받고자하는 것은 "RE: FW: ", "1234", "This is in reference to case 789 reopening"입니다.

나는 정규식을 가진 초보자입니다. 그래서 어떤 도움이 많이 주어집니다.

참고 : 자바 기반 도구에서 작업 중이므로 Java 호환 정규식이 좋을 것입니다.

답변

1

에서 (?i)를 사용하여 대소 문자를 구분 일치를 전환 할 수있을 것입니다 없어진 즉 그것을 않습니다 matches을 사용 하시겠습니까?) 그렇지 않은 경우 (또는 대신 find를 사용하도록 선택할 수있는 경우) 그 때문에 당신의 경기를 다시 밀어 것을 단순히 (.*)을 제거 :

[Cc][Aa][Ss][Ee][^a-zA-Z\\d]*(\\d\\d*)[^a-zA-Z\\d]* 

그렇지 않으면, 최고의 반복이 아닌 욕심 만들;

(.*?)[Cc][Aa][Ss][Ee][^a-zA-Z\\d]*(\\d\\d*)[^a-zA-Z\\d]*(.*) 

그런데 대소 문자를 구분하지 않고 일치 시켜서 간단하게 할 수 있습니다. 도구에서 활성화 할 수없는 경우 정규식에서 인라인으로 처리 할 수 ​​있습니다.

(?i)(.*?)case[^a-z\\d]*(\\d+)[^a-z\\d]*(.*) 

또한 숫자를 단순화했음을 유의하십시오. +은 1 회 이상을 의미합니다.

+0

빠른 응답을 보내 주셔서 감사합니다. 완벽하게 작동합니다. – jerunjose

0

당신은 (?

귀하의 정규식

(?i)(.*?)case[^a-z\d]*(\d+)(.*) 

당신은 당신의 정규식 한 전체 문자열과 일치하는 않는 정규식

관련 문제