簡體   English   中英

Python-正則表達式與字符串不匹配

[英]Python - Regex did not match string

我正在嘗試通過套接字廣播的消息獲取最后一個正則表達式匹配,但它返回空白。

>>> 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', '')
(?P<host>.*?) (?P<code>.*?) (?P<name>.*?) = (?P<msg>.*)

試試看,這有效.*?請參見demo。您的代碼使用.*? 哪說盡可能多地匹配字符,所以在您以前使用的字符.*? <space> .*? <space>最多匹配它遇到的第一個空間,最后一個沒有指定anythng。因此它不匹配任何東西,因為它處於惰性模式。

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

您也可以使用

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

這說比賽懶洋洋地結束了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM