wint 中的正则表达式

wint 中的正则表达式

在我本书的当前版本中,我使用静态引用,但现在我想使用动态引用,使用\label\ref并执行适当的替换。一些替换示例如下:

Figure 5-6 -----> Figure \ref{0506}
Figure 2-17 ----> Figure \ref{0217}
Figure 14-4 ----> Figure \ref{1404}
Figure 34-45 --> Figure \ref{3445}
Figure 12-109 ---> Figure \ref{12109}

由于有大约 2000 个这样的情况,我需要一个正则表达式(最好在 WinEdt 中)。我无法构建这样的表达式。有人能帮我吗?非常感谢!

答案1

我将分三个阶段完成此操作,我将使用 sed 语法,但正则表达式或多或少可以在系统之间移植。

  1. 用零填充个位数的情况(第一部分)

     $ echo 'Figure 5-6' | sed -e 's/Figure \([0-9]\)-/Figure 0\1-/'
     Figure 05-6
    
  2. 用零填充个位数的情况(第二部分)

     $ echo 'Figure 05-6 ' | sed -e 's/Figure \([0-9]\+\)-\([0-9][^0-9]\)/Figure \1-0\2/'
     Figure 05-06 
    
  3. 然后转换为\ref

    $ echo 'Figure 05-06 ' | sed -e 's/Figure \([0-9]\+\)-\([0-9]\+\)/Figure \\ref{\1\2}/'
     Figure \ref{0506} 
    

答案2

@David Carlisle 我在 Winedt 中做了同样的事情(反向引用 \1、\2 等)

Case 1 ---> Figure \(1[0-9]\)-\(2[0-9]\)~[0-9]   e.g. 2-4.  ===> Figure 0\1-0\2     and then  Figure \\ref\{0\10\2\}       
Case 2 ---> Figure \(1[0-9]\)-\(2[0-9][0-9]\)~[0-9]   e.g. 2-14.  ===> Figure 0\1-\2      and then  Figure \\ref\{0\1\2\}         
Case 3 ---> Figure \(1[0-9][0-9]\)-\(2[0-9]\)~[0-9]   e.g. 12-4.  ===> Figure \1-0\2      and then  Figure \\ref\{\10\2\}         
Case 4 ---> Figure \(1[0-9][0-9]\)-\(2[0-9][0-9]\)~[0-9]   e.g. 12-14.   ===> Figure \1-\2       and then  Figure \\ref\{\1\2\}

(当然第四种情况中间步骤不是必要的)。

相关内容