1
this 스레드를 기반으로합니다. 내 NAnt 스크립트에서 내 프로젝트의 현재 버전을 바꾸려고했습니다.AFTER 그룹화 구문이 올바르게 설정되지 않았습니까?
여기 조각에게 내가이 파일을 호출 출력을 바탕으로 다음과 같은 매개 변수
<property name="SetVersionCpp.File" value="${baseline.dir}\VersionNo.h" />
<property name="LineBegining" value="#define FILEVER" />
<property name="ReplaceWith" value="${FileVersion}" />
와
#define FILEVER 0, 2, 0, 3
#define PRODUCTVER 0, 2, 0, 3
#define STRFILEVER "00.02.00.03\0"
#define STRPRODUCTVER "00.02.00.03\0"
<target name="Replace">
<loadfile file="${SetVersionCpp.File}" property="h.file.content" />
<regex
input="${h.file.content}"
pattern="(?'BEFORE'[.\s]*)${LineBegining}\s*[\s\d,]*\r\n(?'AFTER'[.\s]*)" />
<echo
file="${SetVersionCpp.File}"
message="${BEFORE}${LineBegining} ${ReplaceWith}
${AFTER}"
append="false"
verbose="true" />
</target>
교체 제의, 가변 후에는 포착되지 어떤 이유로 파일의 나머지 부분.
[#define FILEVER 0, 2, 0, 30
]
공백이 올바르게 내가 잘못 뭘하는지
모든 아이디어를 형식 있어요 그래서 내가 괄호에 넣어 * : 이것은 내가 무엇을 얻을?
I 라인 엔딩이되고 있는지 당신의 조각에서 말할 수 없다 파일에서 사용되었지만 \ r \ n은 유닉스 라인 엔딩과 일치하지 않습니다. Windows 스타일의 텍스트 파일을 사용하고 있습니까? – Nick
윈도우즈를 사용하고 있습니다. 나는 \ r \ n 대신 \ r과 \ n을 시도했지만 결과는 바뀌지 않았습니다. – petejamd
'(? 'BEFORE'. *) $ {LineBegining} \ s * [\ s \ d] * \ r \ n (? 'AFTER'. *) ', 결과에 두 번째 줄이 포함되고 줄 끝이 일치하지 않음 – petejamd