如何在第一次出现比赛时停止?

时间:2013-06-27 13:25:14

标签: regex match

我这里有这个样本:

received date
something
something
26/6/2013
.
.
due date
something
27/6/2013

我想获得收到日期的第一次出现。我正在尝试使用这个正则表达式:

(?is)(?<=(invoice)?(?<!due.*?)date.*?)(\d{1,4}/\d{1,4}/\d{1,4})

我想要做的是获取之前收到的日期,但是如果有前缀的则应避免获取。我只是想得到26/6/2013 ..也可能,它会像这样的东西一样工作:

date
something
something
26/6/2013
.
.
due date
something
27/6/2013

我是regex的新手,我花了很多时间尝试不同的组合,但似乎都没有用!

请帮助谢谢!

编辑:

我正在使用Expresso ..

以下是我从上面得到的输出:

26/6/2013
27/6/2013

同样,我只想得到第一个......

2 个答案:

答案 0 :(得分:0)

你可以试试这个

received date[\w\s]*(?!due date)[\w\s]*[^\d](\d{1,4}/\d{1,4}/\d{1,4})

第1组捕获日期

OR

/received date.*?(?![\r\n]+due date).*?[^\d](\d{1,4}/\d{1,4}/\d{1,4})/s

答案 1 :(得分:0)

问题可以简化为:获取第一个日期。

(?s)(\d{1,2}/\d{1,2}/\d{2,4}).*