用于替换与完整数字相邻的破折号的正则表达式

Regular expression to replace dashes adjacent to complete numbers

我想编写一个正则表达式来替换前面或后面只有数字的字符串的所有破折号。

看这个例子,我突出显示了我想替换的破折号:

Scotland Primary School (4-11) - (PPI)

holiday-castle@cwwdssaa.org 14-19 Holiday & Clusters - (FR)

SF-00014

www7902-az2388

793902-SS2388

7902-az2388

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

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

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

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

您可以使用环视来检查两边的数字:

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

Demo

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