Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Sanatize输入以在正则表达式中包含空格?_Python_Regex_Escaping_Re - Fatal编程技术网

Python Sanatize输入以在正则表达式中包含空格?

Python Sanatize输入以在正则表达式中包含空格?,python,regex,escaping,re,Python,Regex,Escaping,Re,我目前正在使用python 3.5 我正在尝试制作一个接受输入的工具,并对所说的“Playername”进行正则表达式搜索,然后返回匹配结果。我遇到了一个有趣的问题,因为这与视频游戏有关,一些用户的名字中有特殊的字符(氏族标签) 为了尝试清理输入,我使用了re.escape,但是我没有从中得到我期望的行为 例如,我允许用户输入部分匹配,并使用正则表达式查找播放器。因此,如果我输入Mall,它应该能够在regex中找到Mallachar,她就是我当前的匹配设置示例 regex_match = r&

我目前正在使用python 3.5

我正在尝试制作一个接受输入的工具,并对所说的“Playername”进行正则表达式搜索,然后返回匹配结果。我遇到了一个有趣的问题,因为这与视频游戏有关,一些用户的名字中有特殊的字符(氏族标签)

为了尝试清理输入,我使用了
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。我将对此进行测试。谢谢