如何用相同的数字和句号替换一行中的最后一位数字?

时间:2019-12-01 22:13:07

标签: regex

我正在寻找RegExp来查找并替换一行中最后一位数字的所有实例,并用相同的数字和Memsource中的句号来代替,这似乎无法正常工作。

示例:

图片。 12-1
图片12-2
图片12-3

致:
图片12-1。
图片12-2。
图片12-3。

我已经用\d$选择了它们,但是当我尝试用\..$等替换它们时,似乎无法正常工作。任何建议将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:1)

如@WiktorStribiżew注释中所述,您可以使用(\d)$作为匹配的模式,并使用\1.作为替换它的字符串。快速查看其工作原理:

  • (\d)匹配任意数字并将其捕获到组1中
  • $匹配行尾
  • \1.将匹配的字符串替换为第一个捕获组,后跟一个句点

产生(\d)$-> \1.

但是,是否需要甚至匹配数字?以下替换足以满足$-> .吗?只需将.添加到每一行的末尾。唯一的问题是它不会区分行是否以数字结尾。

如果必须以数字结尾才能接受句点,则还可以通过使用正向后视来避免使用捕获组。在这种情况下,要匹配的模式将是(?<=\d)$,替换模式将是.

  • (?<=\d)是一个积极的后视对象,它检查当前字符之前是否有数字而不消耗任何字符。
  • (?<=\d)$检查以确保行尾的字符是使用该字符的数字(即该字符将不会被替换)。

然后将产生的替换为(?<=\d)$-> .,这将在每行末尾添加一个数字的句点,而无需捕获组。

进一步阅读: