2024-10-01 22:34:59 发布
网友
我想做一个正则表达式函数,只从一串单词和数字中获取单词。你知道吗
def get_name(text): return re.findall("([\w,'\s]+)",text)[0]
但当我执行
get_name('Silverbullet201')
它仍然给我
'Silverbullet201.58'
我认为我的函数只能匹配单词、逗号、撇号和空格。你知道吗
\w将匹配字母和数字。应该使用[a-zA-Z]只包含字母。你知道吗
\w
[a-zA-Z]
def get_name(text): return re.findall("([a-zA-Z]+)",text)[0]
如果仍要匹配所有特殊字符和空格,可以使用以下选项:
def get_name(text): return re.findall("([a-zA-Z,'\s]+)",text)[0] get_name("Silverbul , 'let' 201.58")
输出:
"Silverbul , 'let' "
不幸的是,您不能使用[\w\D],因为它将使用OR比较,而不是AND。实际上,如果以下任何一项为真,您将说match:
[\w\D]
OR
AND
如果您只需要单词(字母),那么\w的用法是不正确的,它还匹配数字和下划线。你知道吗
def get_name(text): return re.findall(r"([A-Za-z]+)",text)[0]
也许是你想要的。你知道吗
\w既包括字母和数字,也包括下划线,因此如果您对单词的定义是一个字母字符串,那么您只需与[A-Za-z]+匹配即可:
[A-Za-z]+
def get_name(text): return re.findall(r'[A-Za-z]+', text)[0]
\w
将匹配字母和数字。应该使用[a-zA-Z]
只包含字母。你知道吗如果仍要匹配所有特殊字符和空格,可以使用以下选项:
输出:
不幸的是,您不能使用
[\w\D]
,因为它将使用OR
比较,而不是AND
。实际上,如果以下任何一项为真,您将说match:如果您只需要单词(字母),那么
\w
的用法是不正确的,它还匹配数字和下划线。你知道吗也许是你想要的。你知道吗
\w
既包括字母和数字,也包括下划线,因此如果您对单词的定义是一个字母字符串,那么您只需与[A-Za-z]+
匹配即可:相关问题 更多 >
编程相关推荐