以下の形式のタブ区切りデータの多くの行をフォーマットしようとしています
ID Name Duration Start_Date Finish_Date Predecessors Successors Resource_Group Deadline Constraint_Type
以下の Lisp コードを使用して、フィールドのリストに変換します。
(while (re-search-forward "\\(.*\\)\t\\(.*\\)\t\\(.*\\)\t\\(.*\\)\t\\(.*\\)\t\\(.*\\)\t\\(.*\\)\t\\(.*\\)\t\\(.*\\)\t\\(.*\\)\t\\(.*\\)\t\\(.*\\)\t\\(.*\\)\t\\(.*\\)\t\\(.*\\)\t\\(.*\\)" nil t)
(replace-match
"* \\2
:PROPERTIES:
:task_id: \\1
:duration: \\3
:start: \\4
:finish: \\5
:predecessors: \\6
:successors: \\7
:resource_group: \\8
:deadline: \\9
:constraint_type: \\,(match-string 10)
:END:"
nil nil))
コードは、10 番目の後方参照された一致文字列に到達するまで、期待どおりに実行されていました。9 を超えるグループを後方参照する解決策は、lisp 関数 (match-string 10) を使用することであることがわかりました。replace-regexp を対話的に使用する場合、置換文字列内の Lisp コードは、'\,' が前に付いている場合に評価され、./(match-string 10) は、replace-regexp が対話的に呼び出されたときに期待どおりに動作します。
ただし、上記のコード ブロックの \\,(match-string 10) はエラーを生成します。1、2、3、4 などの '\' を試しましたが、同じエラーが発生するか、リテラル文字列が出力されます。この関数を使用する方法、または 9 より大きいグループ番号を参照する方法を知っている人はいますか?
どうもありがとう!