Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.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中re.findall()方法的澄清_Python_Regex_String_Str Replace_Replace - Fatal编程技术网

对python中re.findall()方法的澄清

对python中re.findall()方法的澄清,python,regex,string,str-replace,replace,Python,Regex,String,Str Replace,Replace,我想去掉一串标点符号,结果用了 re.findall(r"[\w]+|[^\s\w]", text) 它运行良好,确实解决了我的问题。我不明白的是括号内的细节和整个模式。r“[\w]+|[^\s\w]”真正的意思是什么?我在Python标准库中查找它,它说: re.findall(pattern, string, flags=0) 以字符串形式返回模式的所有非重叠匹配项,作为 串。字符串从左到右扫描,并返回匹配项 按照找到的顺序。如果模式中存在一个或多个组, 返回组列表;这将是一个元组列表,

我想去掉一串标点符号,结果用了

re.findall(r"[\w]+|[^\s\w]", text)
它运行良好,确实解决了我的问题。我不明白的是括号内的细节和整个模式。
r“[\w]+|[^\s\w]”
真正的意思是什么?我在Python标准库中查找它,它说:

re.findall(pattern, string, flags=0)
以字符串形式返回模式的所有非重叠匹配项,作为 串。字符串从左到右扫描,并返回匹配项 按照找到的顺序。如果模式中存在一个或多个组, 返回组列表;这将是一个元组列表,如果模式 有多个组。结果中包含空匹配项 除非他们碰上另一场比赛的开始


我不确定我是否明白了这一点,澄清对我来说听起来有点模糊。有人能告诉我在这个上下文中模式是什么意思,以及它在findall()方法中是如何定义的吗?

要分解它,请创建一个。您经常会看到类似于
[abc]
的内容,它们将匹配
a
b
c
。相反,您也可能会看到
[^abc]
将匹配任何不是
a
b
c
的内容。最后,您还将看到字符范围:
[a-cA-C]
。这引入了两个范围,它将匹配
a
b
c
a
b
c
中的任何一个

在本例中,角色类包含特殊标记<代码>\w和
\s
<代码>\w匹配任何类似的字母<代码>\w实际上取决于您的区域设置,但它通常与
[a-zA-Z0-9\
匹配范围
a-z
a-z
0-9
中的任何内容相同
\s
与之类似,但它与任何可视为空白的内容都匹配

+
表示您可以重复上一个匹配1次或更多次。因此
[a]+
将匹配整个字符串
aaaaaaaaaaaaa
。在您的例子中,您正在匹配彼此相邻的字母数字字符


|
基本上类似于“或”。匹配左边的内容,如果左边的内容不匹配,则匹配右边的内容。

\w
表示字母数字字符加上“\uu”。而
\s
表示空白字符,包括“\t\r\n\v\f”和空格字符“”。所以,
[\w]+|[^\s\w]
表示一个字符串,它只包含您想要了解的单词和“\ux”