正则表达式仅提取字母数字单词

GRo*_*tar 5 python regex alphanumeric

我正在寻找一个正则表达式来提取只包含字母数字字符的单词:

string = 'This is a $dollar sign !!'
matches = re.findall(regex, string)
matches = ['This', 'is', 'sign']
Run Code Online (Sandbox Code Playgroud)

这可以通过对字符串进行标记并使用以下正则表达式单独评估每个标记来完成:

^[a-zA-Z0-9]+$
Run Code Online (Sandbox Code Playgroud)

由于性能问题,我希望能够在不标记整个字符串的情况下提取字母数字标记。我最接近的是

regex = \b[a-zA-Z0-9]+\b
Run Code Online (Sandbox Code Playgroud)

,但它仍然提取包含字母数字字符的子字符串:

string = 'This is a $dollar sign !!'
matches = re.findall(regex, string)
matches = ['This', 'is', 'dollar', 'sign']
Run Code Online (Sandbox Code Playgroud)

是否有正则表达式能够解决这个问题?我尝试了不同的方法,但找不到解决方案。

Cer*_*nce 5

而不是单词边界,回溯和向前看空格(或字符串的开头/结尾):

(?:^|(?<= ))[a-zA-Z0-9]+(?= |$)
Run Code Online (Sandbox Code Playgroud)

https://regex101.com/r/TZ7q1c/1

请注意,“a”是一个独立的字母数字词,因此也包括在内。

['This', 'is', 'a', 'sign']
Run Code Online (Sandbox Code Playgroud)


heg*_*ash 5

不需要为此使用正则表达式,python 有一个内置的isalnum字符串方法。见下文:

string = 'This is a $dollar sign !!'

matches = [word for word in string.split(' ') if word.isalnum()]
Run Code Online (Sandbox Code Playgroud)