3

http://h71000.www7.hp.com/doc/731final/documentation/pdf/ovms_731_file_app.pdf (セクション5-1)のドキュメントには、ファイル名は次のようになっている必要があります。

node::device:[root.][directory-name]filename.type;version

それらのほとんどはオプションです(ノード、デバイス、バージョンなど)-どれがどれで、これを正規表現に正しく書き込む方法(ディレクトリ名を含む)がわかりません:

DISK1:[MYROOT.][MYDIR]FILE.DAT

DISK1:[MYDIR]FILE.DAT

[MYDIR]FILE.DAT

FILE.DAT;10

NODE::DISK5:[REMOTE.ACCESS]FILE.DAT
4

3 に答える 3

4

VMS ::FilespecPerlモジュールのドキュメントとソースを参照してください 。

于 2010-12-16T20:36:20.230 に答える
3

ウィキペディアから、完全なフォームは実際にはそれより少し多いです:

NODE"accountname password"::device:[directory.subdirectory]filename.type;ver

これにはしばらく時間がかかりましたが、これはすべての有効なバリエーションを受け入れ、コンポーネントをキャプチャグループに配置する必要がある式です。

(?:(?:(?:([^\s:\[\]]+)(?:"([^\s"]+) ([^\s"]+)")?::)?([^\s:\[\]]+):)?\[([^\s:\[\]]+)\])?([^\s:\[\]\.]+)(\.[^\s:\[\];]+)?(;\d+)?

また、私が言えることから、あなたの例

DISK1:[MYROOT.][MYDIR]FILE.DAT

は有効な名前ではありません。ブラケットは1組しか使用できないと思います。これがお役に立てば幸いです。

于 2010-12-16T21:16:52.177 に答える
1

これについては、おそらく1つの複雑な正規表現を思い付く可能性がありますが、左から右に向かって各セクションがあればそれを取り除いていくと、コードを読みやすくなります。以下はまさにそれを行うPythonコードです:

lines = ["DISK1:[MYROOT.][MYDIR]FILE.DAT", "DISK1:[MYDIR]FILE.DAT", "[MYDIR]FILE.DAT", "FILE.DAT;10", "NODE::DISK5:[REMOTE.ACCESS]FILE.DAT"]
node_re = "(\w+)::"
device_re = "(\w+):"
root_re = "\[(\w+)\.]"
dir_re = "\[(\w+)]"
file_re = "(\w+)\."
type_re = "(\w+)"
version_re = ";(.*)"
re_dict = {"node": node_re, "device": device_re, "root": root_re, "directory": dir_re, "file": file_re, "type": type_re, "version": version_re}
order = ["node", "device", "root", "directory", "file", "type", "version"]
for line in lines:
    i = 0
    print line
    for item in order:
        m = re.search(re_dict[item], line[i:])
        if m is not None:
            print "  " + item + ": " + m.group(1)
            i += len(m.group(0))

出力は

DISK1:[MYROOT.][MYDIR]FILE.DAT
  device: DISK1
  root: MYROOT
  directory: MYDIR
  file: FILE
  type: DAT
DISK1:[MYDIR]FILE.DAT
  device: DISK1
  directory: MYDIR
  file: FILE
  type: DAT
[MYDIR]FILE.DAT
  directory: MYDIR
  file: FILE
  type: DAT
FILE.DAT;10
  file: FILE
  type: DAT
  version: 10
NODE::DISK5:[REMOTE.ACCESS]FILE.DAT
  node: NODE
  device: DISK5
  directory: REMOTE.ACCESS
  file: FILE
  type: DAT
于 2010-12-16T20:47:36.753 に答える