2

MS Projectでは、タスクを、個別の(外部)プロジェクトファイルに常駐できる他の複数のタスクにリンクできます。これらの外部リンクされたタスクへの参照を取得する唯一の方法は、リンクのコンマ区切りリストである「先行」フィールドを解析することです。残念ながら、これらの外部リンクではパスにコンマが含まれている可能性があるため、単純な分割は機能しません。

これは3つのリンクの例で、2つ目は外部です。

123FS + 5d、\\ server \ folder、カンマ付き\ project1.mpp \ 456,789

内部リンクの場合、形式は次のいずれかになります。

  • #tk
  • #tk +#d
  • #tk-#d

最初の数値がIDの場合、プレースホルダーtkはFS、FF、SS、またはSFであり、オプションの最後の部分(ラグ)は+/-#日です。

外部リンクの場合、リンク情報の前にパスを含むファイル名が続き、その後に円記号が続きます。パスは、UNC(例:\\)またはマップされたドライブ文字(例:L:\)の場合があります。

フィールドには1つ以上のリンクがあり、すべて、一部、またはなしが外部にある可能性があります。

これらのリンクのリストに一致する正規表現パターンが必要です。

助けてくれてありがとう!

編集

後世のために、Project Server( "<> \ file name \ 123")からのパスにも一致するため、最も効果的なパターンを次に示します。

(((<>\\[^\\]+\\)+)|([A-Z]:|\\)\\([^\\]+\\)+)?\d+([FS]{2}([+-]\d+d)?)?(?=,|$)

また、外部依存関係タスクの一意のIDを取得するにはどうすればよいですか?も参照してください。この正規表現パターンをさらに強化するため。

4

2 に答える 2

3

最初の答え:

あなたが提供したサンプルの修正版を使用し、他の多くのものを入れて、私はこの表現を思いついた:

,(?=(([A-Z]:|\\)\\([^\\]+\\)+)?\d+([FS]{2}([+-]\d+d)?)?(?=,|$))

それはあなたの可能なパターンの1つが続くコンマを識別します、そしてあなたはあなたのものを分割するためにそれを使うことができるべきです(私は思う)-あなたが問題を抱えているなら私に知らせてくださいそして私は助けようとします-逃げる今の会議:-D

編集:

リンク自体を分割するには、分割するのではなく、式から最初のコンマと先読みを削除します(これは、分割された式を式に一致するように変換する場合によくありますが、常にではありません...):

(([A-Z]:|\\)\\([^\\]+\\)+)?\d+([FS]{2}([+-]\d+d)?)?(?=,|$)
于 2012-07-12T18:03:29.943 に答える
2

分割を要求しましたが、マッチングはより簡単で、正規表現ライブラリの機能が少なくて済みます。

((?:(?:\\\\|[A-Z]:).*\\)?\d+(?:(?:FS|FF|SS|SF)(?:\+|-)?(?:\d+d)?)?)
于 2012-07-12T18:47:52.020 に答える