代码之家  ›  专栏  ›  技术社区  ›  Surya Subenthiran

Regex以包括字符串值而不是子字符串值

  •  1
  • Surya Subenthiran  · 技术社区  · 8 年前

    我有以下字符串:

    名称:ABC;

    用户名:XYZ;

    我想删除名称值 ABC 因此我使用以下正则表达式:

    ((?<=name))(.*?)(?=;)
    

    它成功地选择了 name 值,但问题是它还选择 username 价值

    我只想删除 名称 值不是 用户名 价值观
    我该怎么做?

    解决方案 :

    **两者 Avinash Bohemian 这个问题的答案是正确的。 通过 阿维纳什 答案我们可以排除包含的所有单词 名称 作为子字符串和 波希米亚人 答案我们可以排除特定的单词。

    2 回复  |  直到 8 年前
        1
  •  2
  •   Avinash Raj    8 年前

    使用单词边界 \b 之前 name .

    (?<=\bname:)(.*?)(?=;)
    

    (?<=\bname:)[^;]*
    
        2
  •  1
  •   Bohemian    8 年前

    修改正则表达式时,可以组合两个look behind,一个正面,一个负面:

    (?<!username)(?<=name).*?(?=;)
    

    还要注意移除不必要的支架。

    阿维纳什的答案可能是我在这种情况下会用到的,但我想我会在这种情况 \b 对未来的访问者不起作用(如名称以结尾的所有数据) name ( streetname , cityname ,等等) 除了 username .