2011-09-09 4 views
1

나는 간단한 문제를 다루고있다.파일 이름과 일치하는 정규식

폴더에 두 개의 파일을 남긴 Cognos 보고서가 있는데, 그 후에 인터페이스는 실행을 시작할 파일 이름에 따라 파일 중 하나를 선택해야합니다.

보고서 프로세스는 사용자에게 보고서의 이름을 설정하도록 요청합니다. 예를 들어. 내가 이름 PaymentJournal06.09을 선택하면, 이러한 파일을 생성합니다

PaymentJournal 06.09-en-us-xml_desc.xml 
PaymentJournal 06.09-en-us.xml 

나는 단지 두 번째 파일을 선택하는 정규 표현식을해야합니다. PaymentJournal*-en-us.xml으로 시도했지만 작동하지 않습니다.

답변

4

당신은 아주 가까이있어 (.). .은 정규 표현식에서 한 문자와 일치하는 특수 문자입니다. 따라서 * 와일드 카드를 사용하는 곳에서는 .* 또는 .+을 대신 입력해야합니다. 첫 번째 문자는 0 개 이상의 문자와 일치하고 두 번째 문자는 1 또는 그 이상의 문자와 일치하지만 두 경우 모두이 경우에 작동해야합니다. 그런 다음 \.과 같이 실제로 사용 된 .은 (는) .과 일치하기 때문에 이스케이프 처리해야합니다. 모든 것을 합치는 것 :

PaymentJournal.*-en-us\.xml

+0

완벽하게 작동합니다. 감사합니다! – Gerardo

6

정규 표현식을 사용하면 *와 같은 와일드 카드가 사용되지 않고 대신 0을 의미하는 수량 기호입니다.

PaymentJournal*-en-us.xml 

l*이 일치합니다 0 개 이상의 l 문자, 의미 : 귀하의 예제에서 그래서

PaymentJourna-en-us.xml 
PaymentJournal-en-us.xml 
PaymentJournall-en-us.xml 
PaymentJournallll-en-us.xml 
... 

을 당신은을 사용해야합니다. 모든 항목과 일치 문자 :

PaymentJournal.*-en-us.xml 

또는 당신은 더 구체적인 수 :

PaymentJournal \d\d\.\d\d-en-us.xml 
\d는 번호와 일치

\.이 기간을 일치

+0

실제로. 또한 문자열을 생성하기 위해 사용하는 것이 무엇이든 쉽게 지원한다면 regex에 문자열의 시작과 끝을 추가 할 수 있습니다. – bdeniker

+0

완벽하게 작동합니다. 감사합니다! – Gerardo