2013-03-12 3 views
0

저는 SAS Content Categorization Studio에서 일하고 있습니다. 나는 하나의 정규 표현식으로 구성된 두 개의 개념을 얻으려고 노력하고있다. 하나는 날짜를 찾고, 다른 하나는 특히 형식화 된 숫자입니다.SAS Content Categorization Studio에서 두 개의 정규 표현식을 사용할 수 없습니다.

(0[1-9]|[12][0-9]|3[01])[.](0[1-9]|1[012])[.](?:[0-9]{2})?[0-9]{2} 

[1-9](?:(?:[ -.])?\d){10,10} 

(구) 날짜를 찾을 것으로 예상되는 정규식만큼 모든 안타를 반환하지 않습니다 (후자) 포맷 된 번호를 찾을 것으로 예상되는 정규식은 활성화 여부를 주석. 날짜에 대한 정규식을 주석 처리하자마자 후자는 계속해서 다시 작업합니다. 그들은 상호 배타적 인 것처럼 보입니다. 아무도 내가 뭘 잘못하고 있다고 말할 수 있습니까?

+0

내가 보는 한 가지 잠재적 인 문제는 귀하의 것입니다. 대괄호 안에있는 문자. 문자 그대로의 점을 맞추려고합니까? 그렇다면 이스케이프 처리해야합니다. (대괄호는이 경우 필요하지 않습니다.) 백 슬래시가 없으면 모든 문자와 일치합니다. –

+0

또한 문제를 강조 표시하는이 정규식에 대한 입력 문자열이 있습니까? –

+0

당신이 사용하고있는 정확한 SAS 코드는 무엇입니까? 문제는 다른 곳에서 나를 괴롭힐 수 있습니다. – Tartaglia

답변

0

끝에있는 패턴이 (?:(?:[ -.])?\d){10,10} 인 경우 날짜 일치 부분 인 경우 나에게 약간의 차이가있는 것으로 보입니다. 일치하는 것으로 보이는 것은 "일부 선택 문자 (문자 그대로 '.'로 인해 임의의 숫자)가 10 개 반복되는 것입니다. 먼저, 10 개의 날짜가 아닌 8 개의 반복을 원할 것입니다. 하지만 당신이 정말로 원하는 것은 \d{1,2}([\.-])\d{1,2}\1\d{4}입니다. 이것은 "하나 또는 두 자릿수, 그 다음에 리터럴 또는 -, 그 뒤에 하나 또는 두 자릿수가오고 앞에 나온 것과 일치하는 특수 문자 (. 또는 -), 네 자리가옵니다."와 일치합니다.

+0

안녕하세요, Matt 님, 귀하의 회신에 감사드립니다. 대괄호 안의 점은 이스케이프 할 필요가 없습니다. 첫 번째 정규식은 날짜 값이 아닌 11 자리 숫자를 찾습니다. 두 번째 정규식은 날짜 값을 찾기로되어 있습니다. 두 표현식 모두 올바른 구문을 사용합니다. 따라서 문제는 구문이 아니라 다른 콘텐츠가 사용 중지 된 경우 콘텐츠 분류 Studio에서 하나의 정규식에 대해서만 일치를 반환한다는 것입니다. – mpdegn

+0

당신은 정확합니다 -'.'는'[]' '안에서 이스케이프 할 필요가 없습니다. 또한, 나는 식을 거꾸로보고 있었다. 나는 첫 번째 것이 11 자리 숫자와 일치하는 동안 두 번째 것이 날짜와 일치하려고한다고 생각했다. –