我正在尝试格式化以下表格的多行 TAB 分隔数据
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 函数(匹配字符串 10)。当以交互方式使用 replace-regexp 时,如果替换字符串中的 lisp 代码以 '\,' 开头,则会对其进行评估,并且 ./(match-string 10) 在交互调用 replace-regexp 时的行为与我预期的一样;
但是,上述代码块中的 \\,(match-string 10) 会产生错误。我试过一、二、三、四等'\',但它要么产生相同的错误,要么打印一个文字字符串。有谁知道使用此功能的方法或引用大于 9 的组号的方法?
非常感谢!