1

このスレッドに基づいています。NAntスクリプトで、プロジェクトの現在のバージョンのセットを置き換えようとしました。

これが私の置換スニペットです

<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, 3
#define PRODUCTVER 0, 2, 0, 3
#define STRFILEVER     "00.02.00.03\0"
#define STRPRODUCTVER  "00.02.00.03\0"

以下のパラメータで

<property name="SetVersionCpp.File" value="${baseline.dir}\VersionNo.h" />
<property name="LineBegining" value="#define FILEVER" />
<property name="ReplaceWith" value="${FileVersion}" />

出力に基づいて、AFTER変数は何らかの理由でファイルの残りの部分をキャプチャしていません。これは私が得るものです:

[#define FILEVER 0, 2, 0, 30

]

*空白が正しくフォーマットされるように角かっこで囲みます

私が間違っていることについて何か考えはありますか?

4

1 に答える 1

1

改行と一致するようにoptionsto を設定し、グループからクラスを削除することで修正しました。Singleline.

<regex
  input="${h.file.content}"
  options="Singleline"
  pattern="(?'BEFORE'.*)${LineBegining}\s*[\s\d,]*\r\n(?'AFTER'.*)" />
于 2012-05-01T19:28:46.000 に答える