首页 > 解决方案 > 看不懂带数字去掉单词的代码

问题描述

我想删除带数字的单词。经过研究,我明白了

 s = "ABCD abcd AB55 55CD A55D 5555"
>>> re.sub("\S*\d\S*", "", s).strip()

这段代码可以解决我的情况

但是,我无法理解这段代码是如何工作的。我知道正则表达式,我知道单独 \d 识别所有数字 [0-9]。\S 用于空格。并且 * 是其左侧模式的 0 次或多次出现

"\S*\d\S*"

这部分我无法理解

但我不确定我是否理解此代码如何识别 AB55。

谁能给我解释一下?谢谢

标签: pythonregexpython-3.x

解决方案


这将用空字符串“”周围的任何非空格符号替换数字

AB55 被视为:AB are \S*, 5 is \d, 5 is \S*

55CD:empty string is \S*, 5 is \d, 5CD is \S*

A55D:A is \S*, 5 is \d, 5D is \S*

5555:empty string is \S*, 5 is \d, 555 is \S*

re.sub("\S*\d\S*", "", s)所有这些子字符串替换为空字符串 "" 和 .strip() 是无用的,因为它删除了前一个结果开头和结尾的空格


推荐阅读