只选择最近出现的日期,Regex [duplicate]

cl25kdpy  于 2023-01-14  发布在  其他
关注(0)|答案(1)|浏览(109)
    • 此问题在此处已有答案**:

Regex to find last occurrence of pattern in a string(5个答案)
7小时前关闭。
仅选择最近出现的日期。\d{2}([.-/])\d{2}\1\d{4}

1)07/06/2022 refusal
2)policy of other SK, until 01.03.2027, 14904
3)05/19/2021, providing an insurance contract with another insurance company 9522 until 05/20/2022, until 05/20/2023
4)12/04/2020, granted by 8639 to 10/10/2024

预期结果:

1)07/06/2022
2)01.03.2027
3)05/20/2023
4)10/10/2024
d5vmydt9

d5vmydt91#

假设日期总是以升序从开始到结束出现在文本中,那么您将要求 * last * 日期出现在每个文本中。在这种情况下,我们可以使用负前瞻来标识最后日期:

\d{2}([.-/])\d{2}\1\d{4}(?!.*\d{2}([.-/])\d{2}\2\d{4})
                         ^^^ ensures that no other date follows the match


∮ ∮ ∮ ∮

    • 编辑:**

为了在Oracle SQL上处理这个要求,我们需要有创造性。一种方法是反转字符串,然后找到 * first * 日期,然后反转该值。将REVERSE()REGEXP_SUBSTR()一起使用,我们可以尝试:

WITH t AS (
    SELECT '05/19/2021, providing an insurance contract with another insurance company 9522 until 05/20/2022' AS val
    FROM dual
)

SELECT REVERSE(REGEXP_SUBSTR(REVERSE(val), '(\d{4}[./-]\d{2}[./-]\d{2})'))
FROM t;  -- 05/20/2022


∮ ∮ ∮ ∮

相关问题