使用 C# 将大道和街道替换为除数正则表达式

Replace avenue and street with divisor regex using C#

我有以下数据:

输入

10 AVE    2 ST
NORTH 100 AVE 5 TERR
S 39 AVE NW
S 39 AVE 1R
S 39 AVE  234 S

当发现文本“AVE”后跟一个或多个数字时,应添加正斜杠,如下所示:(并消除多余的空格)

输出

10 AVE / 2 ST
NORTH 100 AVE / 5 TERR
S 39 AVE NW
S 39 AVE 1R
S 39 AVE / 234 S

我有一些东西但不太好用,因为它正在消除其他字符:

address = Regex.Replace(address.ToUpper(), @"AVE\s\d", "/");

在此先感谢您的帮助。

您可以使用

address = Regex.Replace(address.ToUpper(), @"(AVE)\s+(?=\d+\b)", " / ");

参见regex demo。如果要整词匹配,在AVE前加上\b

详情:

  • (AVE) - AVE 捕获到组 1 (</code>)</li> <li><code>\s+ - 一个或多个空格
  • (?=\d+\b) - 后跟一个或多个数字,然后是单词边界。

注意以下结果是等价的:

Regex.Replace(address.ToUpper(), @"(?<=AVE)\s+(?=\d+\b)", " / ")
Regex.Replace(address.ToUpper(), @"AVE\s+(\d+)\b", "AVE / ")