Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 正则表达式-替换每个奇数/偶数出现_Regex_Sed - Fatal编程技术网

Regex 正则表达式-替换每个奇数/偶数出现

Regex 正则表达式-替换每个奇数/偶数出现,regex,sed,Regex,Sed,好的,伙计们,任务是用模式B替换模式a的每一个奇数出现,用模式C替换每一个偶数出现。我放弃了这一点,并为此任务编写了一个python脚本,但我想知道是否可以用正则表达式替换来处理它(通过sed或vi) 如果您需要知道这是为了什么,它是用双引号将长文本重新格式化为LaTeX样式(“打开”、“关闭”)。最直接的方法是在处理之前将文件完全读入模式空间——因为它是一个LaTeX源文件,我认为它适合内存。你可以用 sed ':a $!{ N; ba }; s/"\([^"]*\)"/``\1'"''"'/

好的,伙计们,任务是用模式B替换模式a的每一个奇数出现,用模式C替换每一个偶数出现。我放弃了这一点,并为此任务编写了一个python脚本,但我想知道是否可以用正则表达式替换来处理它(通过sed或vi)


如果您需要知道这是为了什么,它是用双引号将长文本重新格式化为LaTeX样式(“打开”、“关闭”)。

最直接的方法是在处理之前将文件完全读入模式空间——因为它是一个LaTeX源文件,我认为它适合内存。你可以用

sed ':a $!{ N; ba }; s/"\([^"]*\)"/``\1'"''"'/g' filename.tex
(LaTeX结尾引号)的Shell引号使这看起来比实际情况更令人困惑。塞德看到的是

:a $!{ N; ba }          # read the whole file into the pattern space
s/"\([^"]*\)"/``\1''/g  # replace all quoted strings with LaTeX-quoted strings

举个例子会更好。