我目前正在使用 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
?