2011-01-17 5 views
0

다음 문자열과 모두를 검색 할 수있는 하나의 정규식을 만들어야합니다.문자열의 집합을 얻기위한 특정 정규식

// 'NC_' or 'NG_', can be from 6 to 9 digits after the underscore. 
// '.' is static, can be 1 or 2 digits after the '.' 
"NC_123456.12" or "NG_123456.12" 
// Example: /^N(G|C)_[0-9]{6,9}\.[0-9]{1,2}/ 


// 'LRG_' is static, can be 1 or more digits after the underscore 
"LRG_1234" 
// Example: /LRG_[1-9][0-9]*/ 


// 'UD_' is static, can be 1 or more digits after the underscore 
"UD_123456789012" 
// Example: /UD_[0-9]+/ 

그래서 내가 가지고있는 문제는 내가 개별적으로 문자열을 찾는 정규식이 필요하지만, 내가 ONE 정규식을 필요로 위의 모든 상황을 잡을 수있는 것이 아니다. 나는 그것이 가능 할지도 모른다. 그러나 나는 시험해보고 싶어하는 모두에게 미리 감사하고 싶다! 어쩌면

+0

브랜치에 대해 이미 알고 있으므로 사용하지 않으시겠습니까? 내가 당신의 문제를 오해 한 것입니까? – hop

답변

2

당신이 경우 2 세를 결합 할 수 있습니다. 또한, 케이스 1에 대한 귀하의 정규식은 조금 어색합니다. 당신이 그것을 지원하는 변형을 사용하는 경우

/N[GC]_[0-9]{6,9}\.[0-9]{1,2}|(LRG|UD)_[0-9]+/ 

, 당신은 당신이 조금 혼란 코멘트에 제공

/N[GC]_\d{6,9}\.\d{1,2}|(LRG|UD)_\d+/ 

정규식 예제를 사용할 수 있습니다.

/N[GC]_\d{6,9}\.\d{1,2}|LRG_[1-9]\d*|UD_\d+/ 

일반적인 원칙은 약자하십시오 |으로 가지를 결합 할 경우 LRG_ 뒤의 숫자가 0으로 시작하지 않아야합니다, 당신은 다음과 같은 솔루션을 사용해야합니다.

+0

어쩌면 http://stackoverflow.com/questions/310199/how-can-i-translate-the-following-filename-to-a-regular-expression-in-python/311214#311214 도움을 줄 것입니다 – hop

+0

Thnx this sounds 가장 필요한 것. – lugte098

+0

코드의 주석에 따르면 LRG_ 뒤에 0을 붙일 수없는 경우 어떻게 대답합니까? – jbx

0

는 :

/^(N(G|C)_[0-9]{6,9}\.[0-9]{1,2})|(RG_[1-9][0-9]*)|(UD_[0-9]+)/ 
+0

이것에 대해 생각했지만, 이렇게하는 것이 매우 깨끗하지 않다고 생각했지만, 이렇게하는 더 좋은 방법은/^ (LRG) | (UD) | (N (G | C)) _ [0-9] +/내가 말하려고하는 것을 이해하면 조합과 비슷합니다 .... – lugte098

+0

코드에서 규칙을 결합하여 결합하기가 어렵다면, 첫 번째 규칙 LRG는 0이 될 수 없습니다. NG 또는 NC 다음의 숫자는 점 사이에 점 (.)을 가지며, 다른 점은 점을 갖지 않습니다. – jbx

관련 문제