使用 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 / ")
我有以下数据:
输入
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 / ")