2014-10-17 4 views
1

나는 문자열이 포함 된 속성을 가지고 있으며 파일의 행을 테스트하기 위해 쉼표로 구분 된 목록으로 변경하려고합니다. 하나 개의 값과 현재개미 ConCons 쉼표로 구분 된 값

다음 작품 :

<loadfile property="contents" srcFile="output.log"> 
    <filterchain> 
     <linecontains> 
      <contains value="${findvalue}"></contains> 
     </linecontains> 
    </filterchain> 
</loadfile> 

그래서 파일에 라인이 포함되어있는 경우 :
안녕하세요 세계!

findvalue의 값 = 'World'는 행을 찾습니다. 이제 여러 단어와 일치하는 모든 줄을 찾고자합니다. 따라서 파일의 줄에 다음이 포함되는 경우 :
Hello World!
안녕히 가세요!

우리는 파일의 findvalue = World, Everyone 및 pickup 두 줄을 설정하려고합니다. 바라건대 나는 이것을 충분히 이해하고있다. 가장 잘 수행 할 수있는 방법에 대한 아이디어가 있습니까?

답변

2

한 가지 방법은 linecontainsregexp 필터를 사용하여 특정 정규식과 일치하는 줄을 얻는 것입니다. 트릭은 쉼표로 구분 된 값 목록을 하나의 정규식으로 변환하는 것입니다. 재산 findvalueWorld,Everyone 경우

, 정규식은 단순히 라인 하나 World또는Everyone이 포함되어 의미 World|Everyone, 수 있습니다.

<property name="findvalue" value="World,Everyone" /> 
<loadresource property="findvalueRegex"> 
    <propertyresource name="findvalue"/> 
    <filterchain> 
     <tokenfilter> 
      <filetokenizer/> 
      <replacestring from="," to="|" /> 
     </tokenfilter> 
    </filterchain> 
</loadresource> 

그런 다음 linecontainsregexp 필터에이 정규 표현식을 포함하는 findvalueRegex 속성을 전달합니다

<loadfile property="contents" srcFile="output.log"> 
    <filterchain> 
     <linecontainsregexp> 
      <regexp pattern="${findvalueRegex}" /> 
     </linecontainsregexp> 
    </filterchain> 
</loadfile> 
+0

당신이 너무 많은이 완벽하게 작동 감사합니다! – bcoveny