Python 正则表达式将令牌拆分为两个独立的部分

Python 正则表达式将令牌拆分为两个独立的部分,python,regex,Python,Regex,我的正则表达式与整个令牌不匹配。我不明白为什么。它将0存储在列表中的另一个索引中,但我需要x-0作为一个令牌进行匹配 pattern = re.compile(r'(\b\w\D\-\d\W\b)') test = 'x-0' matches = pattern.finditer(test) tokens = [] for match in matches: tokens.append(match.group(0)) 输出 ['x-', '0'] 我不知道你为什么要添加\D和\W来

我的正则表达式与整个令牌不匹配。我不明白为什么。它将0存储在列表中的另一个索引中,但我需要x-0作为一个令牌进行匹配

pattern = re.compile(r'(\b\w\D\-\d\W\b)')

test = 'x-0'
matches = pattern.finditer(test)
tokens = []
for match in matches:
    tokens.append(match.group(0))
输出

['x-', '0']

我不知道你为什么要添加
\D
\W
来匹配上面的模式。
x
后面没有非
-
的非数字字符,
0
后面没有非字母数字字符,因此您可能希望省略
\D
\W
。另一个选项是使用星号(
*
),如下所示。 让我知道这是否有帮助:

import re
pattern = re.compile(r'(\b\w(\D*)-\d(\W*)\b)')

test = 'x-0'
tokens = pattern.findall(test)

您需要
r'\b\w-\d\b'
。或者,
r'\b\w+-\d+\b'
我没有得到该输出。
\w\d
匹配两个字符,但在
-
之前没有两个字符。请在代码块周围使用三个反勾,而不是三个引号。谢谢。我试过用背虱,但由于某种原因,它不起作用:S