正则表达式替换完整数字旁边的破折号

时间:2018-07-26 15:33:17

标签: c# regex replace regex-group

我想写一个正则表达式来替换所有短划线,这些短划线紧跟在后面的数字或仅由数字组成的字符串之后。

请参见此示例,我突出显示了我想替换的破折号:

  

苏格兰小学(4 - 11)-(PPI)

     

holiday-castle@cwwdssaaaa.org 14 - 19 假日与聚类-(FR)

     

SF - 00014

     

www7902-az2388

     

793902 - SS2388

     

7902 - az2388

我要替换的破折号的格式为-

粗体中是相邻数字的字符串,指示应设置其格式。如您所见,文本中的破折号不应格式化,即电子邮件地址中的破折号,必须用空格包围或不与一组完整的数字相邻。

到目前为止,我已经写了这篇文章,但不确定如何进一步:

(-\b\d+\b|\b\d+\b-)

1 个答案:

答案 0 :(得分:1)

您可以使用环顾四周检查两侧的数字:

string input = "Scotland Primary School (4-11) - (PPI)";
string result = Regex.Replace(input, @"(?<=(^|\s)\d+)-|-(?=\d+(\s|$))", ",");
Console.WriteLine(result);

Demo

我在这里假设替换项是逗号,因为在您的问题中,关于替换项应该是什么,我实际上没有看到任何东西。