为什么会发生这种简单的正则表达式错误?

时间:2014-08-17 18:50:27

标签: regex python-2.7

我想看看是否可以在不使用*x的情况下从这些元素中删除rstrip。我尝试了以下方法:

import re import time list = ["3*x", "2", "4*x", "1", "3*x", "0"] new_list = [] for terms in list: new_list.extend(re.sub(r'$(\*x)','', terms)) print new_list time.sleep(4) 这在逻辑上是有道理的,因为具有*x的每个元素都将以它结尾,因此我使用了$。然而我输出如下: ['3', '*', 'x', '2', '4', '*', 'x', '1', '3', '*', 'x', '0'] 但是,如果我只是从上面的代码中删除$,那么我得到正确的输出:

['3', '2', '4', '1', '3', '0']

那么为什么初始代码会给出这样的错误输出? 我完全是正则表达式的新手,所以尽量做到相当基础。

1 个答案:

答案 0 :(得分:1)

$表示字符串的结尾。您希望匹配字符串末尾的*x,因此您需要编写\*x$

此外,由于字符串是可迭代的,l.extend('asd')基本上会l.append('a'); l.append('s'); l.append('d')。您可能希望使用append,而不是extend