【问题标题】:Find, cut and paste regex in sublimeText3在 sublime Text 3 中查找、剪切和粘贴正则表达式
【发布时间】:2021-09-16 04:33:09
【问题描述】:

我的文本文件中有以下内容:

53\footnote{Author Name, \textit{Book Title}, p..}
3\footnote{Author Another, \textit{Book Old}, p..}
5-6\footnote{Author Onemore, \textit{Book New}, p..}

我有几百种这样的文本。使用简单的正则表达式后,我来到了这里。这是乳胶标记文本。它们不在单独的行中,它们在文本之间。使用正则表达式,我想移动开头的数字并像这样放置:p.53。它应该是这样的:

\footnote{Author Name, \textit{Book Title}, p.53.}
\footnote{Author Another, \textit{Book Old}, p.3.}
\footnote{Author Onemore, \textit{Book New}, p.5-6.}

如果不在 Sublime 中,我可以使用 Linux 上可用的任何工具。

编辑 1:我的文本中有一些数字,例如年份和日期。因此,解决方案必须避免更改它们。此外,脚注的大小在某些情况下会有所不同。但p..} 始终保持不变。

【问题讨论】:

    标签: regex text latex pattern-matching sublimetext3


    【解决方案1】:

    在 Sublime 中,选择 Find → Replace…

    Find: 字段中,输入

    ([\d-]+)(\\footnote.*?\}, p\.)
    

    并在Replace: 字段中输入

    \2\1
    

    解释:

    有两个捕获组,用括号 () 括起来。第一个捕获一个或多个由数字 0-9 (\d) 和连字符 (-) 组成的字符。这是页码或页码范围,假设字符之间没有空格。

    第二个捕获组在\footnote LaTeX 指令处开始捕获,并选择直到并包括}, p. 的所有字符。我们现在准备替换,这是一个非常简单的操作 - 只需反转两个捕获组的位置,在替换字段中由 \2\1 表示。

    请参阅demo at regex101.com here

    再次,这是假设您的所有目标的格式都与您在问题中显示的完全一样,没有多余的字符或空格。

    【讨论】:

    • 我不仅能够完成我在问题中提出的要求,而且还有助于为我正在寻找的另一种解决方案设置正则表达式。它节省了大量容易出错的工作。
    • @nixnotwin 很高兴为您提供帮助,祝您论文顺利!
    猜你喜欢
    • 2018-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多