Python Sanatize输入以在正则表达式中包含空格?
我目前正在使用python 3.5 我正在尝试制作一个接受输入的工具,并对所说的“Playername”进行正则表达式搜索,然后返回匹配结果。我遇到了一个有趣的问题,因为这与视频游戏有关,一些用户的名字中有特殊的字符(氏族标签) 为了尝试清理输入,我使用了Python Sanatize输入以在正则表达式中包含空格?,python,regex,escaping,re,Python,Regex,Escaping,Re,我目前正在使用python 3.5 我正在尝试制作一个接受输入的工具,并对所说的“Playername”进行正则表达式搜索,然后返回匹配结果。我遇到了一个有趣的问题,因为这与视频游戏有关,一些用户的名字中有特殊的字符(氏族标签) 为了尝试清理输入,我使用了re.escape,但是我没有从中得到我期望的行为 例如,我允许用户输入部分匹配,并使用正则表达式查找播放器。因此,如果我输入Mall,它应该能够在regex中找到Mallachar,她就是我当前的匹配设置示例 regex_match = r&
re.escape
,但是我没有从中得到我期望的行为
例如,我允许用户输入部分匹配,并使用正则表达式查找播放器。因此,如果我输入Mall
,它应该能够在regex中找到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的含义?您可以使用中的操作符来检查播放器名是否在其他字符串中:
name_list = ['~DOG~ Master', '~DOG~ Runner']
player_name = '~DOG~ Run'
player_list = []
for name in name_list:
if player_name in name:
player_list.append(name)
print(player_list)
这张照片是:
['~DOG~ Runner']
您可以在
操作符中使用,检查玩家名称
是否在其他字符串中:
name_list = ['~DOG~ Master', '~DOG~ Runner']
player_name = '~DOG~ Run'
player_list = []
for name in name_list:
if player_name in name:
player_list.append(name)
print(player_list)
这张照片是:
['~DOG~ Runner']
在
中使用可能是解决此问题的正确方法,但这取决于regex问题本身的使用
添加一组参数将允许您使用匹配项
python so_post.py
('~DOG~ Run',)
alexl@MBP000413 ~ :)% cat so_post.py
import re
regex_match = r".*(~DOG~ Run).*"
name = "~DOG~ Run"
match = re.match(regex_match, name, re.IGNORECASE)
print(match.groups())
使用命名组可以使用特定的名称,而不仅仅是匹配的常规元组
regex_match = r".*(?P<user_clan>~DOG~ Run).*"
name = "~DOG~ Run"
match = re.match(regex_match, name, re.IGNORECASE)
print(match.groups("user_clan"))
regex_match=r.*(?P~DOG~Run)。”
name=“~DOG~快跑”
match=re.match(regex_match,name,re.IGNORECASE)
打印(匹配组(“用户组”))
在
中使用可能是解决此问题的正确方法,但在使用regex问题本身
添加一组参数将允许您使用匹配项
python so_post.py
('~DOG~ Run',)
alexl@MBP000413 ~ :)% cat so_post.py
import re
regex_match = r".*(~DOG~ Run).*"
name = "~DOG~ Run"
match = re.match(regex_match, name, re.IGNORECASE)
print(match.groups())
使用命名组可以使用特定的名称,而不仅仅是匹配的常规元组
regex_match = r".*(?P<user_clan>~DOG~ Run).*"
name = "~DOG~ Run"
match = re.match(regex_match, name, re.IGNORECASE)
print(match.groups("user_clan"))
regex_match=r.*(?P~DOG~Run)。”
name=“~DOG~快跑”
match=re.match(regex_match,name,re.IGNORECASE)
打印(匹配组(“用户组”))
这是我一年前写的。。。我似乎不记得为什么我选择了regex而不是in。我将对此进行测试。谢谢这是我一年前写的。。。我似乎不记得为什么我选择了regex而不是in。我将对此进行测试。谢谢