我使用Calibre将PDF转换为MOBI,但是它在解释空格缩进的代码块时遇到了困难。这些块包含很多空格,但数量不同。有些行甚至缩进了31个空格。在
Calibre允许3个正则表达式在转换之前在书中进行搜索和替换。在
这就是我试过的。在
\n( *) ( *)([a-zA-Z{};\*\/\(\)�-9])
替换为:
^{pr2}$
问题是,它只替换了一个空格。我要用相同的
替换它们。在
我也试过第一组的懒惰版本等等
这是正则表达式不足的情况之一吗?我认为这个regex引擎是python的标准。在
Tags:
\s{31}将精确匹配31个空格,\s{14,31}14到31
如果这是Perl,您可以将}。我怀疑在这一点上,Calibre允许输入regex的长度将达到一个极限。:-/
(\G|\n)
替换为$1
,如果它是一个允许有限宽度lookbehind(而不是像Python那样的固定宽度lookbehind)的regex引擎,则可以将(?<=\n {0,30})
替换为
;但事实上,我能想到的唯一方法是将((?<=\n)|(?<=\n )|(?<=\n {2})|(?<=\n {3})|(?<=\n {4})|(?<=\n {5})|...|(?<=\n {30}))
替换为{另一个选择是采用完全不同的方法,将
(两个空格)替换为
(非中断空格+正则空格),而不必费心将其限制在行的开头。我猜那能满足你的需要吗?在有什么理由不把所有的空格都换成不间断的空格?(
r/ / /
。)它不会改变普通英语文本的外观(除非源代码有额外的双空格),并且代码块将正确呈现。在
为了好玩,我在Python中的尝试:
这个想法是一次替换一个空间。它不起作用是因为
re
引擎在匹配后没有返回到行的开头-它从左到右使用字符串。在{{cd4>捕获空的字符串
相关问题 更多 >
编程相关推荐