我目前正在使用 python 3.5。
我正在尝试制作一个接受输入的工具,并对所说的“玩家名”进行正则表达式搜索并返回匹配结果。我遇到了一个有趣的问题,因为这是与电子游戏相关的,并且一些用户的名字中有特殊字符(氏族标签)。
为了尝试清理输入,我正在使用re.escape,但我没有得到我期望的行为。
例如,我允许用户输入部分匹配项,并使用正则表达式来查找玩家。所以如果我输入Mall,它应该能够正则表达式找到Mallachar,她是我当前的示例匹配设置。
regex_match = r".*" + player_name + r".*"
if re.match(regex_match, str(name_list), re.IGNORECASE):
player_list.append(players)
因为这是一个用户名不是唯一的系统,玩家可以更改他们的名字,所以我正在搜索用户的“列表”。
无论如何,我遇到的问题是人们有空间或氏族标签。例如,如果氏族~DOG~加入服务器,并且我有名字的人,~DOG~ Master并且~DOG- Runner如果我输入字符串~DOG~ Run,我会得到所有匹配项~DOG~ .*。
我的理解是re.escape应该逃避空间,所以它是我搜索的一部分,所以它应该试图匹配这个
.*~DOG~\sRun.*
但相反,它似乎正在运行它,就像它忽略了之后的所有内容~DOG~:
.*~DOG~.*
我误解了怎么回事re.escape?