删除正文中引用的数字,但不删除没有引用组的十进制数字?(正则表达式)



我写了一个小python程序来更改regex,并将我的pdf教科书转换为音频文件,以便在开车时收听。我突然想到,我可以使用内置TTS和regex替换的pdf阅读程序Librera Reader来更灵活地完成这项任务,同时能够轻松阅读。然而,Librera阅读器不能在替换文本中使用组引用。

这是我一直在使用的替代品:

([a-zA-Z|)|%][.|,|a-z|)])d+(?:[-,]d+)*

这里有一个简化的版本,它完成了这个问题的大部分工作:

([a-zA-Z][.])d+

替换为:

1

有没有一种方法可以使用Regex来捕获一个字母,后面跟着一个句点,后面跟着这样的数字,而不需要在替换中使用组引用,也不需要捕获数字-句点-数字字符串。这样我就可以进行以下转换:

测试单词。7另外1.5是一个可以测试的数字。9

测试单词。1.5也是一个可以测试的数字。

我知道您在[...]中使用了|;"更好";在视觉上分离了字符类的各个部分,但您也将|作为现在与文字管道匹配的类的一部分。你需要拆下这些管子。

为了解决当前的问题,您可以将捕获组变成一个正向后备,因为模式的长度已知(在要删除的数字(范围(之前只有两个字符(。

您可以使用

(?<=[a-zA-Z)%][.,a-z)])d+(?:[-,]d+)*

查看regex演示

(?<=[a-zA-Z)%][.,a-z)])正后方查找与紧跟在前面的位置匹配

  • [a-zA-Z)%]-ASCII字母,)%,然后
  • [.,a-z)]-.,、小写ASCII字母或)

最新更新