我当前正在使用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是什么吗?
答案 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"))