代码之家  ›  专栏  ›  技术社区  ›  Ivan Anatolievich

在结果中包含正向前瞻中的角色

  •  1
  • Ivan Anatolievich  · 技术社区  · 8 年前
    Name: John
    Surname: Doe
    Age: 24
    

    当我这样做的时候

    Regex.Replace(str,"(?<=^|\n)(.*)(?=:)", "")    
    

    我明白了

    : John
    : Doe
    : 24
    

    我想去掉冒号而不用另一个替代品

    2 回复  |  直到 8 年前
        1
  •  6
  •   Wiktor Stribiżew    8 年前

    这个 (?=:) 是一种积极的前瞻,是一种非消费模式。这个 : 测试char,但它不在匹配值内,因此不会替换为 Regex.Replace 方法

    您可以通过将前瞻模式转换为消费模式来实现模式的工作,即。 (?=:) => : ,但您可以使用

    (?m)^.*:
    

    请参见 regex demo

    这个 (?m)^ 匹配 线 ,无需使用 (?<=^|\n) 正如它所表明的那样。然后 .*: 尽可能多地匹配除换行符以外的任何0个以上字符,直到最后一个 : 还有最后一个 :

    还要删除后面的空格 : ,您可以添加 \s* ,或(如果只想处理水平空格字符) [\p{Zs}\t]*

        2
  •  -1
  •   1984    6 年前

    将积极的前瞻性替换为消极的前瞻性。