gpt4 book ai didi

javascript - 正则表达式仅匹配第一次或仅第二次出现

转载 作者:行者123 更新时间:2023-11-29 22:59:08 25 4
gpt4 key购买 nike

我需要在一个字符串中找到两个数字,但我只知道需要前两个数字还是后两个数字,不知道它们在字符串中的确切位置以及它们周围的内容。字符串是日期,但出于所有意图和目的,格式是随机的。
到目前为止我想到了这个:

(?<=\D)\d{1,2}(?=\D)

它匹配我需要的,但我需要在第一次或第二次出现后停止匹配,所以它不会找到这些示例中的几乎所有内容:

2019-01-05 23:59:59
2019 01 05 23:59:59
2019. 01. 05. 23:59:59
2019.01.05. 23:59:59
05-01-2019 23:59:59
5-1-2019 23:59:59
05/01/2019 23:59:59
5/1/2019 23:59:59
5 1 2019 23:59:59
05 1 2019 23:59:59
05. 1. 2019 23:59:59
5. 1. 2019 23:59:59

基本上我想在每一行中匹配“1”/“01”或“5”/“05”。
我已经搜索了很多论坛,但找不到任何有帮助的解决方案,似乎到处都是解决方案取决于字符串,而不是“只找到第 n 次出现”。就我而言,这确实是解决问题的唯一方法,至少我无法想出任何每次都绝对匹配的模式。上面的示例甚至不是唯一的可能性,您可以格式化日期的任何方式都是其中之一,我唯一知道的事实是它在我要搜索的所有文档中都是一致的,日期始终包含分隔符并且它来得早。

最佳答案

This expression可能会帮助您只获得所需月份和日期的第一次出现:

[-\s.]+(\d{2})[-\s.]+(\d{2})[\s\S]*

这样做不是最好的表达方式,但它可能会让您大致了解这个贪婪的字符 [\s\S]* 如何遍历您不需要的字符的其余部分。

您可以根据需要简单地更改我的初始边界,您可以使用您的原始表达式进行微小的更改,仅后跟 [\s\S]*

enter image description here

图表显示了它是如何工作的:

enter image description here

关于javascript - 正则表达式仅匹配第一次或仅第二次出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55994121/

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