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

Regex to include the string values not substring values

我有以下字符串:

name:ABC;

username:XYZ;

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

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

它成功地选择了 name 值,但问题是它也选择了 username 值。

我只想删除 name 个值,而不是 username 个值。
我该怎么做?

解决方案:

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

name之前使用单词边界\b

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

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

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

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

另请注意删除了不必要的括号。

Avinash 的回答可能是我在这种情况下会使用的,但我想我会以这种方式显示以防万一 \b 对未来的访问者不起作用,例如名称以 [=12 结尾的所有数据=] (streetname, cityname, 等等) 除了 username.