这里是我匹配红宝石用正则表达式匹配可选
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