我有一个带有单元格的excel文档,其中包含以下信息:
A) Current to: Notice of 19 June 2014 Sent on: August 2012
B) Updated on: October 2018
C) Updated: 14 January 2009
我使用以下正则表达式取得了一些成功:
(\b\d{1,2}\D{0,3})?\b((?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|Jun(?:e)?|Jul(?:y)?|Aug(?:ust)?|Sep(?:tember)?|Oct(?:ober)?|(?:Nov|Dec)(?:ember)?))\D?(\d{1,2}\D?)?\D?((19[7-9]\d|20\d{2})|\d{2})
我的输出如下:
A) 19 June2014August2012
B) October 2018
C) 14 January 2009
B和C可以很好地提取,但是我希望A的2014年6月19日
我尝试添加。*?使表达式不那么贪婪,但是(取决于我在何处添加点星),我要么没有结果,要么得到了一个不准确的答案
答案 0 :(得分:2)
要匹配一行上的第一个匹配项,您可以在模式的开头添加^.*?
,将捕获的括号括起来,然后将Multiline
regex属性设置为True
。您的比赛在match.Submatches(0)
内部。
regEx.Pattern = "^.*?((?:\b\d{1,2}\D{0,3})?\b(?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sep(?:tember)?|Oct(?:ober)?|(?:Nov|Dec)(?:ember)?)\D?(?:\d{1,2}\D?)?\D?(?:(?:19[7-9]\d|20\d{2})|\d{2}))"
regEx.Multiline = True
请参见regex demo。