[英]preg_match with expressions
我有兩種類型的線從RSS中提取。 這些是正在玩的游戲和尚未開始的游戲。 我下面的代碼只會拉開已經開始的游戲。
$string = "Tampa Bay 6 Florida 5 (FINAL - OT)
Ottawa 0 Toronto 3 (FINAL)
NY Islanders at Ottawa (7:30 PM ET)
Toronto at Tampa Bay (7:30 PM ET)
San Jose at St. Louis (8:00 PM ET)
Detroit at Nashville (8:00 PM ET)
Vancouver at Chicago (8:30 PM ET)
Los Angeles at Edmonton (10:00 PM ET)";
preg_match_all("/^(\D+)(\d+ )(\D+)(\d+ )\s*\((.*)\)$/m", $string, $result);
echo "<pre>";
print_r($result);
重要的是團隊對於兩種類型的線路保持相同的陣列。 我不知道該怎么做。 有幫助嗎? 我敢肯定它只是一個我忘記的表達。
唷。 這就是我想出來的。 它使用條件模式來匹配分數(如果有的話),如果沒有找到分數,它會偷偷地“刪除”'at'(表示它是一個未開始的匹配)。 它將使用相同的技術來獲得第二支球隊的得分。 最后它將匹配最后一個paranthesis組的內容。
被捕組:
最后一個paranthesis的內容
preg_match_all('#^([a-zA-Z] +)(?(?= \\ d +)(\\ d +)\\ s + | \\ s + at \\ s +)([a-zA-Z] +)(?( ?= \\ d +)(\\ d +))\\ s +(([^]] +))#m',$ str,$ matches);
//注意編輯快樂的用戶,正則表達式無法在SO上正確格式化。
唯一的問題是你應該修改團隊名稱,因為它們中可能不需要空格。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.