Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无法理解删除带有数字的单词的代码_Python_Regex_Python 3.x - Fatal编程技术网

Python 无法理解删除带有数字的单词的代码

Python 无法理解删除带有数字的单词的代码,python,regex,python-3.x,Python,Regex,Python 3.x,我想删除带有数字的单词。经过研究,我明白了这一点 s = "ABCD abcd AB55 55CD A55D 5555" >>> re.sub("\S*\d\S*", "", s).strip() 这段代码可以解决我的问题 然而,我无法理解这段代码是如何工作的。我知道regex,并且我知道\d可以识别所有数字[0-9]\S代表空白。和*是图案左侧的0个或多个引用 "\S*\d\S*" 这部分我不能理解 但我不确定我是否理解这段代码是如何识别AB55的 谁能给我解释一下吗?

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

 s = "ABCD abcd AB55 55CD A55D 5555"
>>> re.sub("\S*\d\S*", "", s).strip()
这段代码可以解决我的问题

然而,我无法理解这段代码是如何工作的。我知道regex,并且我知道\d可以识别所有数字[0-9]\S代表空白。和*是图案左侧的0个或多个引用

"\S*\d\S*"
这部分我不能理解

但我不确定我是否理解这段代码是如何识别AB55的


谁能给我解释一下吗?谢谢

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

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

55CD:
空字符串是\S*,5是\d,5CD是\S*

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

5555:
空字符串是\S*,5是\d,555是\S*


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

您误解了代码
\S
\S
相反:它与除空格外的所有内容都匹配

由于Kleene星(
*
)是贪婪的,因此它的目标是匹配尽可能多的非空格字符,后跟一个数字,后跟尽可能多的非空格字符。因此,它将匹配一个完整的单词,其中至少有一个字符是数字


然后,所有这些匹配项都被空字符串替换,因此从原始字符串中删除。

您的代码首先匹配0+倍的非空白字符
\S*
(其中
\S*
匹配空白字符),并将一直匹配到“单词”的结尾。然后它回溯到匹配一个数字,然后再次匹配0+非空白字符

例如,模式也将匹配单个数字

您可以稍微优化模式,使其首先不匹配空格字符或数字
[^\s\d]*
,使用a防止第一个
\s*
匹配整个单词

[^\s\d]*\d\S*

这就是您的
regex
的工作方式,您提到了
\S
中的空格。但事实并非如此

这就是python提到的
\s
\s

\

匹配任何空白字符;这相当于类[\t\n\r\f\v]

\

匹配任何非空白字符;这相当于类[^\t\n\r\f\v]

这是与用于空白字符的
\s
一起使用的

你会得到这样的输出

>>重新导入
>>>
>>>s=“ABCD AB55 AB55 CD A55D 5555”
>>>re.sub(“\s*\d\s*”,“”,s).strip()
“zhou zhou zhou zhou zhou zhou广告”

\S
匹配非空白字符,而不是空白字符。No
\S
\S
相反,所以除了空白字符外,所有字符都是空白字符。空白字符为
\S
,非空白字符为
\S
。注意它是大写的。此外,您的regexes一站式服务: