【问题标题】:Regex differentiate between first and street c# regex.replace正则表达式区分第一和街道 c# regex.replace
【发布时间】:2021-10-04 09:19:31
【问题描述】:

我有以下数据:

123ST
89ST
101ST
1ST
TEST

我想区分 first 和 street,如果最后一个字符不包含 1,则放置一个空格。

Add Space:

123 ST
89 ST

Do not modify:

101ST
1ST
TEST

这是我目前所拥有但尚未找到解决方案的:

address = Regex.Replace(address, @"\sST", " ");

注意:不应修改非数字数据,如 TEST 示例所示。

【问题讨论】:

    标签: c# regex


    【解决方案1】:

    你可以使用

    address = Regex.Replace(address, @"(?<=[02-9])ST$", " $&");
    // Or, if `ST` appears in the start/middle of the string and is at the end of a "word"
    address = Regex.Replace(address, @"(?<=[02-9])ST\b", " $&");
    

    请参阅.NET regex demo

    正则表达式匹配

    • (?&lt;=[02-9]) - 正向回溯,匹配紧接在前面有 0 数字或从 29 范围的数字的位置
    • ST - ST 子字符串
    • $ - 字符串结尾和
    • \b - 单词边界。

    【讨论】:

    • 嗨,维克托,谢谢。抱歉忘了提到非数字不应该被修改。我更新了项目以包含单词 TEST。
    • @RobertSmith 所以,您只想在非1 数字之后匹配ST,对吧?
    • 嗨,Wiktor,谢谢你成功了!是的,只匹配 2-9 和零。干得好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-16
    • 2012-03-12
    • 1970-01-01
    • 1970-01-01
    • 2013-08-10
    相关资源
    最近更新 更多