我想创建一个仅从字符串和数字中获取单词的正则表达式函数。
def get_name(text):
return re.findall("([\w,'\s]+)",text)[0]
但是当我执行
get_name('Silverbullet201')
它仍然给我
'Silverbullet201.58'
我以为我的函数只能匹配单词,逗号,撇号和空格。
答案 0 :(得分:3)
\w
既包含字母,数字,也包含下划线,因此,如果您对单词的定义是一串字母,则应该简单地与[A-Za-z]+
匹配:
def get_name(text):
return re.findall(r'[A-Za-z]+', text)[0]
答案 1 :(得分:1)
如果只期望单词(字母),则\w
的用法不正确,它也与数字和下划线匹配。
def get_name(text):
return re.findall(r"([A-Za-z]+)",text)[0]
也许就是您想要的。
答案 2 :(得分:0)
\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: