2011-04-01 5 views
1

JAR 이름과 버전을 추출하기위한 정규 표현식이 필요합니다. 입력 값은 아래의 형태이다 :경로 디렉토리에 대한 정규 표현식

C:\WORK\Modify file\test2\lib\messageclass-12.jar 
C:\WORK\Modify file\test2\lib\utilities-396.jar 
C:\WORK\Modify file\test2679\lib\castor-1.jar 

출력 같아야

messageclass 
12 

utilities 
396 

castor 
1 

어떤 도움을 받고있다. 가 업데이트 나는이 속성 값에서 추출하는 개미 스크립트에서이를 사용하고

: 노호 MessageClass가 12 :

<propertyregex override="yes" property="propA" input="@{file}" regexp="here should be the regex" replace="" global="true" />  

및 @ {파일} 가리키고는 C : \ WORK \ 수정 파일 \ TEST2 \ lib 디렉토리 \ MessageClass가-12.jar

샘플 예에서 찾을 수 있습니다 : http://ant-contrib.sourceforge.net/tasks/tasks/for.html

제안에 따라

최종 솔루션입니다 :

이름을했을

/.*\\(.*)-(\d+)\.jar/ 

캡처 1, 2 버전 번호를 캡처 :

  <!-- calculate jar name --> 
      <propertyregex override="yes" property="jarname" input="@{file}" regexp="-(\d*)\.jar" replace="" global="true"/> 
      <propertyregex override="yes" property="jarname" input="${jarname}" regexp=".*\\(\S*)\\" replace="" global="true"/> 
      <!-- calculate jar version --> 
      <propertyregex override="yes" property="jarversion" input="@{file}" regexp=".*\\(\S*)-" replace="" global="true"/> 
      <propertyregex override="yes" property="jarversion" input="${jarversion}" regexp=".jar" replace="" global="true"/> 
+1

어떤 언어를 사용하고 있습니까? 어떤 종류의'Path.Split' 유형 함수를 사용하여 파일 이름을 얻은 다음, 문자열 함수를 사용하여'-'로 분할하면됩니다 (또는 실제로 원한다면 그 시점에서 regex를 사용하십시오). – Blorgbeard

+0

질문, 답변 해 주셔서 감사합니다. –

답변

1
.*\\(\S*)-(\d*)\.jar 

이 작업을 수행해야합니다.

+0

jar 파일이 이름에 공백이 있으면 정규식이 작동하지 않습니다. @detunized의 regex가 더 좋게 보인다. 그러나 jar 파일에 C : \ WORK \ Modify file \ test2679 \ lib \ castor-.jar와 같은 버전 번호가없는 경우 regex도 작동하지 않습니다. 그래서 최고의 정규식이 될 것입니다. * \\ (. *) - (\ d *) \. 내 생각에 jar – Alptugay

+0

당신의 제안에 기반한 완벽한 솔루션이 이제 질문에 게시되었습니다. –

1

이보십시오.

이 예제는 Rubular입니다.

+0

이름 부분의. *를 \ w +로 변경하고 $를 추가하여 끝에 일치가 시작되도록하십시오. /.*\\(\w+)-(\d+)\.jar$/ – Chris