正则表达式 - 替换每 odd/even 次出现
Regex - replace every odd/even occurrence
好的,伙计们,任务是用模式 B 替换模式 A 的每个奇数出现,用模式 C 替换每个偶数出现。我放弃了这个并为任务写了一个 python 脚本但是我想知道它是否可以用正则表达式替换来处理(例如通过 sed 或 vi)
如果您需要知道这是为了什么目的,那就是将带有双引号的长文本重新格式化为 LaTeX 样式(`` 打开,'' 关闭)。
最直接的方法是在处理文件之前将文件完全读入模式 space——因为它是一个 LaTeX 源文件,我认为它适合内存。您可能会使用
sed ':a $!{ N; ba }; s/"\([^"]*\)"/``'"''"'/g' filename.tex
Shell 引用 ''
(LaTeX 结束引号)使这看起来比实际更混乱。 sed看到的是
:a $!{ N; ba } # read the whole file into the pattern space
s/"\([^"]*\)"/``''/g # replace all quoted strings with LaTeX-quoted strings
好的,伙计们,任务是用模式 B 替换模式 A 的每个奇数出现,用模式 C 替换每个偶数出现。我放弃了这个并为任务写了一个 python 脚本但是我想知道它是否可以用正则表达式替换来处理(例如通过 sed 或 vi)
如果您需要知道这是为了什么目的,那就是将带有双引号的长文本重新格式化为 LaTeX 样式(`` 打开,'' 关闭)。
最直接的方法是在处理文件之前将文件完全读入模式 space——因为它是一个 LaTeX 源文件,我认为它适合内存。您可能会使用
sed ':a $!{ N; ba }; s/"\([^"]*\)"/``'"''"'/g' filename.tex
Shell 引用 ''
(LaTeX 结束引号)使这看起来比实际更混乱。 sed看到的是
:a $!{ N; ba } # read the whole file into the pattern space
s/"\([^"]*\)"/``''/g # replace all quoted strings with LaTeX-quoted strings