处理输入以在正则表达式中包含空格?

时间:2019-07-17 18:17:09

标签: python regex python-3.5 python-regex

我当前正在使用python 3.5。

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

要尝试清理输入,我正在使用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〜的所有匹配项。* < / p>

我的理解是re.escape应该逃避空格,因此它是我搜索的一部分,因此它应该尝试与此匹配

.*~DOG~\sRun.*

但是Iit似乎正在运行它,就像它忽略〜DOG〜

之后的所有内容一样。
.*~DOG~.*

我误解了re.escape是什么吗?

2 个答案:

答案 0 :(得分:0)

您可以使用75运算符检查100是否在其他字符串内:

Exception in thread "main" java.util.InputMismatchException
    at java.util.Scanner.throwFor(Scanner.java:864)
    at java.util.Scanner.next(Scanner.java:1485)
    at java.util.Scanner.nextInt(Scanner.java:2117)
    at java.util.Scanner.nextInt(Scanner.java:2076)
    at Solution.main(Solution.java:9)

此打印:

in

答案 1 :(得分:0)

使用in可能是解决此问题的正确方法,但要使用正则表达式问题本身。

添加一组括号可以让您使用匹配项

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"))