我有这个Lua过滤器:
return {
{
Str = function (elem)
if elem.text == "Dog" then
return {pandoc.Str "Cat"}
else
return elem
end
end,
}
}
可以很好地处理如下内容:
This is a Dog
但不在
上This is a Dog?
浏览了https://unix.stackexchange.com/questions/204136/to-regex-pandoc-tables后,这似乎是一项非常复杂的工作。
对于pandoc初学者是否有一个简单的解决方案?
这是在大多数情况下应该工作的东西。它首先将文本拆分为字母数字字符和标点符号,然后检查单词,并在必要时重新添加标点符号:
function Str (str)
local word, punct = str.text:match '(%w*)(%p*)'
if word == 'Dog' then
return 'Cat' .. punct
end
end
Lua不使用正则表达式,而是使用手册中描述的更简单的模式匹配器。(你可以通过re
在pandoc中使用regex,但那是另一回事。)