在一个条件下“被捕获的组等于”

我正在写一个正则表达式来捕获各种日期格式。 为了保持简洁灵活,我想将几​​个月,几天和几年的所有可能组合分别放入不同的组中。 让我们假设我有两个这样的日期:

01.01。 - 31.12.2013

1月 - 2013年12月

现在,我想要实现的是编写一个正则表达式,以捕获上述两个日期。 这很容易。 但我也想排除例如那些日期:

01.01。 - 2013年12月31日

换句话说,无论何时月份混杂,我都不想要这些日期。 另外,如果第一次约会没有一天,我不希望那一天被第二次约会。

我想创建一个条件,它只捕获第二个日期的适当的字段,根据第一个日期中找到的内容(例如,如果第一个日期有一个阿尔法月份,只查看第二个日期的阿尔法月份,忽略数字)。 我的正则表达式如下所示:

(?<firstDay>0[1-9]|[12][0-9]|3[01]|[1-9])[-/s.](?<firstMonth>0[1-9]|1[012]|[p{L}]{3,}|[1-9])s*[-s/.]*s*(?<secondDay>0[1-9]|[12][0-9]|3[01]|[1-9])[-s/.]*(?<secondMonth>((?<firstMonth>)(?<=0[1-9]|1[012]|[1-9]))(0[1-9]|1[012]|[1-9])|[p{L}]{3,})[-s/.]*(?<year>(19|20)dd|[012][0-9]$)

这是所有背景,但是我的问题是, 是否有可能检查捕获的组是否等于并基于此创建捕获条件? 我在Stack Overflow上找到了一些类似的主题(不幸的是,现在找不到它),但是当我实现它时,它会停止捕获一些正确的日期(例如01.01。 - 31.12.2013)。 这是这个部分:

(?<secondMonth>((?<firstMonth>)(?<=0[1-9]|1[012]|[1-9]))(0[1-9]|1[012]|[1-9])|[p{L}]{3,})
链接地址: http://www.djcxy.com/p/74785.html

上一篇: "captured group equals" in a condition

下一篇: capture group still showing in match