Python正则表达式与字符串不匹配

2024-06-16 09:24:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图获取套接字广播的消息上的最后一个正则表达式匹配项,但它返回空白。你知道吗

>>> msg = ':morgan.freenode.net 353 MechaBot = #xshellz :MechaBot ITechGeek zubuntu whitesn JarodRo SpeedFuse st3v0 anyx danielhyuuga1 AussieKid92 JeDa Failed Guest83885 RiXtEr xryz D-Boy warsoul buggiz rawwBNC MagixZ fedai Sunborn oatgarum dune SamUt Pythonista_ +xinfo madmattco BuGy azuan DarianC stupidpioneers AnTi_MTtr JeDaYoshi|Away PaoLo- StephenS chriscollins Rashk0 morbid1 Lord255 victorix [DS]Matej EvilSoul `|` united Scrawn avira ssnova munsterman Logxen niko gorut Jactive|OFF grauwulf b0lt saapete'
>>> r = re.compile(r"(?P<host>.*?) (?P<code>.*?) (?P<name>.*?) = (?P<msg>.*?)", re.IGNORECASE)
>>> r.search(msg).groups()
(':morgan.freenode.net', '353', 'MechaBot', '')

Tags: re消息netmsgfreenode空白morganmechabot
1条回答
网友
1楼 · 发布于 2024-06-16 09:24:22
(?P<host>.*?) (?P<code>.*?) (?P<name>.*?) = (?P<msg>.*)

试试看这个。这个很好。看到了吗演示。你的代码使用.*?,它说匹配尽可能少的字符我能。所以呢虽然它是您以前使用过的.*? <space>,但它匹配到它遇到的第一个空格,在最后一个空格中,您没有指定什么都可以。所以呢它与anythin不匹配,因为它处于延迟模式。你知道吗

https://regex101.com/r/aQ3zJ3/1

你也可以使用

(?P<host>.*?) (?P<code>.*?) (?P<name>.*?) = (?P<msg>.*?)$

上面写着比赛一直拖到最后。你知道吗

相关问题 更多 >