匹配以数字结尾的术语

时间:2011-11-23 15:54:58

标签: python regex

我有一个单词列表,其中的模式是“term”或“termNUM”,例如“term”或“term02”。 我想保存以数字结尾的所有术语,但删除那些纯粹是字母的术语。

我对正则表达式全新,我尝试了一些选项,并获得以下内容:

new_list = [x for x in old_list if re.match("[(^a-zA-Z_)\d]", x)]

它不起作用,我知道它只需要在某处进行一些小调整,但由于我在正则表达式方面的技能有限,所以不能快速完成。

提示非常感谢。

3 个答案:

答案 0 :(得分:3)

r".*\d"

这是任何字符(.),任意次(*)后跟一个数字(\d)。你的列表理解是正确的。

您也可以

[x for x in old_list if x[-1].isdigit()]

假设空字符串不在列表中。我更喜欢这个选项,因为它更清楚它的作用。

答案 1 :(得分:3)

为什么要使用正则表达式,只需检查最后一个字符是否是数字。即。

new_list = [x for x in old_list if x[-1].isdigit()]

答案 2 :(得分:2)

>>> list = ["term", "term2", "term200"]
>>> new_list = [x for x in list if re.match("^[a-zA-Z_]+\d+$", x)]
>>> new_list
['term2', 'term200']