這裏是我匹配紅寶石用正則表達式匹配可選
AQUEDUCT - March 25, 2017 - Race 4\n MAIDEN CLAIMING - Thoroughbred\n
INNER DIRT FOR MAIDENS, FOUR YEARS OLD AND UPWARD FOALED IN NEW YORK STATE AND
APPROVED BY THE\n NEW YORK STATE-BRED REGISTRY. Weight, 121 lbs. Claiming
Price $25,000. (S) Claiming Price: $25,000\n Six Furlongs On The Inner track
Track Record: (Captain Red - 1:07.93 - February 26, 2003)\n Purse:
此正則表達式失敗的文本,即使可選claiming_price條款是由非貪婪之前「 *?」序列。
/(Thoroughbred).*?(?<claiming_price>Claiming Price:.*?\n)?.*Track Record:/m
當我取出「?」在claiming_price子句之後,它起作用
/(Thoroughbred).*?(?<claiming_price>Claiming Price:.*?\n).*Track Record:/m
爲什麼當claiming_price子句是可選匹配時它不工作?如何獲得匹配並保持claiming_price子句可選?
編輯:我將如何使這個更復雜的正則表達式的工作?這是我正在與之合作的人。我簡化了原文,讓讀者更容易。但我正在處理您的答案,我不知道如何將其應用於我的真正正則表達式。
/(Thoroughbred|Quarter Horse)\n(?<rules>.*?)(?<claiming_price>Claiming Price:.*?\n)?(?<track_type>(?:(?!\n).)*?)Track Record:.*? - (?<track_record>\d.*?\d) -.*\nPurse/m
「失敗」和「作品」是什麼意思?除非存在Ruby錯誤,否則正則表達式可以工作。 – sawa