我正在使用Notepad ++和带有正则表达式的查找和替换模式来更改用户名,这样只显示屏幕名称的第一个和最后一个字符,由四个星号(*)分隔。例如,“albobz”将成为“a **** z”。
用户名直接列在提示“screen_name:”之后,我知道我可以使用正则表达式找到所有用户名:
screen_name:\s([^\s]+)
但是,这个表达式不会存储第一个或最后一个字母,我不知道该怎么做。
以下是一个示例行:
February 3, 2018 screen_name: FR33Q location: Europe verified: false lang: en
答案 0 :(得分:1)
您必须使用\G
元字符。在使用\G
的N ++中有点棘手。
正则表达式找到:
(?>(screen_name:\s+\S)|\G(?!^))\S(?=\S)
故障:
(?>
构建非捕获组(原子)
(
首次捕获群体的开始
screen_name:\s\S
匹配姓名的第一个字母)
第一个CG结束|
或\G(?!^)
从上一场比赛继续)
NCG结束\S
匹配非空白字符(?=\S)
最后一个角色替换为:
\1*
上面的解决方案用*
替换每个内部字符,因此长度保持不变。如果你想在不考虑长度的情况下放置四个*
s,你会搜索:
(screen_name:\s+\S)(\S*)(\S)
并替换为:\1****\3