我有一些每日時間的字串,它們以兩種可能的方式給出:
(...) 1100-1300 DAILY (...)(...) DAILY 1100-1300 (...)
我想讀時間。不幸的是,我不能像下面那樣這樣做,因為我有兩次使用同一個組(這是不可接受的),所以這會引發錯誤:
import re
string = "TIME SCHEDULE: 1100-1300 DAILY"
pattern = "((?P<time>\d{4}-\d{4}) DAILY|DAILY (?P<time>\d{4}-\d{4}))"
match = re.search(pattern, string)
time = match.group("time")
我可以在這里做的是創建兩個單獨的組(time1和time2),然后檢查匹配中是否存在它們中的任何一個......可能,但很臟且不可擴展(如果我有超過 2 個組怎么辦?)。
如何在不使用非標準模塊的情況下處理它?
uj5u.com熱心網友回復:
您可以調整您的正則運算式以僅使用一次命名捕獲組:
(?P<time>\d{4}-\d{4})(?:(?= DAILY)|(?<=DAILY \d{4}-\d{4}))
正則運算式演示
(?:(?= DAILY)|(?<=DAILY \d{4}-\d{4}))使用交替來應用匹配 DAILY后的條件,time否則它使用后視來DAILY 確保time.
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/437270.html
上一篇:正則運算式查找貪婪和懶惰的匹配以及所有介于兩者之間的匹配
下一篇:使用正則運算式的搜索和替換方法
