0

我仍在学习正则表达式的内在函数,并且想知道是否可以使用单个正则表达式找到与单词相距一定距离的数字。

考虑以下文本

DateClient
15-01-20130060 15-01-20140010 15-01-20150020

我希望我的正则表达式只匹配15-01-2013.

我知道我可以拥有完整DateClient 15-01-2013的 with DateClient\W+\d{2}-\d{2}-\d{4},然后再应用正则表达式,但我正在尝试构建一个可配置的不可知系统,为用户提供权力,所以我希望有一个匹配的正则表达式15-01-2013

这甚至可行吗?

有什么建议么?

4

2 回答 2

2

您可以使用捕获组:

DateClient\W+(\d{2}-\d{2}-\d{4})

javascript 中的示例(您没有指定语言):

var str = "DateClient\n15-01-20130060 15-01-20140010 15-01-20150020";
var date = str.match(/DateClient\W+(\d{2}-\d{2}-\d{4})/)[1];

编辑(在添加 Ruby 标签之后):

在 Ruby 中,您可以使用

(?<=DateClient\W)(\d{2}-\d{2}-\d{4})

示范

于 2013-02-11T12:31:36.807 回答
1

查看lookbehind以仅匹配日期。但是,您的环境的后向支持可能会受到限制。

或者您可以只使用一个捕获,您将能够从匹配结果中提取它。

于 2013-02-11T12:33:07.170 回答