小编Pus*_*ush的帖子

无法在 re.sub() repr 表达式的函数调用中使用“\1”反向引用捕获组

我有一个字符串S = '02143'和一个列表A = ['a','b','c','d','e']。我想将 'S' 中的所有数字替换为 list 中相应的元素A

例如,替换0A[0]2withA[2]等。最终输出应该是S = 'acbed'.

我试过:

S = re.sub(r'([0-9])', A[int(r'\g<1>')], S)
Run Code Online (Sandbox Code Playgroud)

然而这会产生错误ValueError: invalid literal for int() with base 10: '\\g<1>'。我猜它正在将反向引用'\g<1>'视为字符串。我该如何解决这个问题,特别是使用re.sub和捕获组,否则呢?

python regex backreference substitution capture-group

2
推荐指数
1
解决办法
611
查看次数

在perl中提取特定字符串的完美正则表达式

我有一个abc.txt看起来像这样的文本文件:

dQdC(sA1B2C3,sC5) = A lot of stuff
a = b = c
Baseball
dQdC(sC2V3X1,sD5) = A lot of stuff again
Run Code Online (Sandbox Code Playgroud)

现在我想在Perl中创建两个数组,其中一个将包含A1B2C3C2V3X1,其他数组将包含C5D5.我不关心其他中间线.为了实现这个目标,我正在尝试这个perl脚本:

for (my $in=0;$in<=$#lines;$in++){
if ($lines[$in]=~/dQdC\(s([A-Z0-9]+?),s([A-Z0-9]+?)\)/) {
  print "1111"; #this line is just to check if it is at all going inside the loop
  @A = $1;
  @B = $2;
}
Run Code Online (Sandbox Code Playgroud)

但是,它甚至没有进入循环内部.所以我想我的正则表达式做错了.有人请告诉我这里做错了什么吗?

regex perl

0
推荐指数
1
解决办法
55
查看次数