我有一个正则表达式,我花时间在这里写研究,但它并没有做我想要的。我试图提取的价值是这样的:
DATE OF SURGERY: 08/06/2013
我想拉日期,但我想把斜杠变成破折号。我写了这个:
(?<=DATE OF SURGERY: *)\d{1,2}/\d{1,2}/\d{1,4}
这让我可以撤回08/06/2013,但我需要它撤回08-03-2013。有没有办法让我在正则表达式中对破折号进行硬编码?或者是否有替换方式我可以用破折号替换斜线?谢谢大家
答案 0 :(得分:1)
如果您想要匹配DATE OF SURGERY: 08/06/2013
或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/2013
替换为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");