gpt4 book ai didi

regex - 有没有办法让这个正则表达式不那么贪婪。使用 Excel VBA

转载 作者:行者123 更新时间:2023-12-04 22:28:37 26 4
gpt4 key购买 nike

我有一个包含以下信息的单元格的 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 提取罚款,但我预计 2014 年 6 月 19 日为 A

我试过添加 .*?使表达式不那么贪婪,但是(取决于我添加点星的位置),我要么没有结果,要么得到不准确的响应

最佳答案

要匹配一行中的第一个匹配项,您可以添加 ^.*?在模式的开头,用捕获括号包裹你所拥有的并设置Multiline正则表达式属性到 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 .

关于regex - 有没有办法让这个正则表达式不那么贪婪。使用 Excel VBA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55367849/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com