正则表达式包含字符串值而不是子字符串值

时间:2016-02-09 07:37:02

标签: regex regex-negation regex-lookarounds

我有以下字符串:

  

名:ABC;

     

用户名:XYZ;

我想从字符串中删除名称值ABC,因此我使用以下正则表达式:

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

它成功选择name值,但问题是它还会选择username值。

我只想删除name值不是username值 我怎么能这样做?

**这个问题的AvinashBohemian答案都是正确的。 通过Avinash回答,我们可以将包含name的所有字词排除为子字符串,并使用Bohemian答案排除特定字词。

2 个答案:

答案 0 :(得分:2)

\b之前使用字边界name

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

(?<=\bname:)[^;]*

答案 1 :(得分:1)

修改你的正则表达式,你可以结合两个看后面,一个正面,一个负面:

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

还要注意删除不必要的括号。

Avinash的回答可能就是我在这种情况下会使用的,但我认为如果\b对未来访问者不起作用,我会以这种方式显示,例如名称以name结尾的所有数据(streetnamecityname等)除了 username