【问题标题】:Find DATE match starting from end of string [duplicate]从字符串末尾开始查找 DATE 匹配项 [重复]
【发布时间】:2019-12-30 23:23:36
【问题描述】:

我有以下 RegEx 语法,它将匹配找到的第一个日期。

([0-9]+)/([0-9]+)/([0-9]+)

但是,我想从内容的末尾开始并向后搜索。换句话说,在下面的示例中,我的语法将始终匹配第一个日期,但我希望它匹配最后一个日期。

Some Text here
01/02/15
Some additional
text here.
10/04/14
Ending text
here

我相信这可以通过使用负前瞻来实现,但我所有的尝试都失败了,因为我对 RegEx 的了解不够。帮助将不胜感激。

注意:我的应用程序使用 RegEx PCRP。

【问题讨论】:

  • 规则是这样的:pattern(?!.*pattern)。如果. 不匹配换行符,make it

标签: regex


【解决方案1】:

您可以使用例如内联修饰符 (?s) 使点匹配换行符并匹配到字符串的末尾。

然后使用回溯,直到最后一次出现类似日期的模式,并在第一个数字之前加上单词边界。

使用\K 忘记匹配的内容并匹配日期类似模式。

^(?s).*\b\K[0-9]+/[0-9]+/[0-9]+

Regex demo

请注意,该模式是一个非常广泛的匹配,并且不验证日期本身。

【讨论】:

  • 由于某种原因,这两个都匹配到最后一个日期的所有内容。我只希望它在最后一个日期匹配。如果您在这里查看我的原始正则表达式,它只匹配日期。 regex101.com/r/9kvECV/1
  • @JadonR 我已更新模式以仅匹配日期。
猜你喜欢
  • 2022-07-06
  • 1970-01-01
  • 2018-12-05
  • 1970-01-01
  • 1970-01-01
  • 2014-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多