0

我有一个正则表达式,我花时间在这里写研究,但它并没有完全符合我的要求。我试图提取的值是这样的:

DATE OF SURGERY:  08/06/2013 

我想拉日期,但我想把斜线变成破折号。我写了这个:

(?<=DATE OF SURGERY: *)\d{1,2}/\d{1,2}/\d{1,4}

这让我可以在 2013 年 8 月 6 日撤回,但我需要在 2013 年 8 月 3 日撤回。有没有办法对正则表达式中的破折号进行硬编码?还是有一种替换方法可以用破折号替换斜杠?谢谢你们

4

1 回答 1

1

如果您的意思是要匹配类似DATE OF SURGERY: 08/06/2013or的字符串DATE OF SURGERY: 08-06-2013,则可以使用以下模式:

(?<=DATE OF SURGERY: *)\d{1,2}[/-]\d{1,2}[/-]\d{1,4}

但这也会捕获混合斜杠或连字符DATE OF SURGERY: 08/06-2013。如果您只想获得两个斜杠或两个连字符,则需要使用反向引用:

(?<=DATE OF SURGERY: *)\d{1,2}([/-])\d{1,2}\1\d{1,4}

如果您的意思是您想使用正则表达式替换DATE OF SURGERY: 08/06/2013with DATE OF SURGERY: 08-06-2013,那么您需要使用这样的替换模式:

match: (?<=DATE OF SURGERY: *)(\d{1,2})([/-])(\d{1,2})\2(\d{1,4})

replace: \1-\3-\4

例如,这是 C#,但您使用的实际代码将取决于您的特定语言和正则表达式引擎:

Regex.Replace(input, 
    @"(?<=DATE OF SURGERY: *)(\d{1,2})([/-])(\d{1,2})\2(\d{1,4})",
    @"\1-\3-\4");
于 2013-08-13T16:12:57.833 回答