如何从 txt 文件的部分行中删除非字母或数字的内容?
我还有更多的username:password
解释username;password
。
我想只编辑用户名,并删除其中除字母或数字以外的所有内容,而不修改密码。我想使用正则表达式来执行此操作,因为我正在使用 Emeditor 处理大型文件,并且我相信正则表达式在和中都Notepad++
有效Emeditor
。
我试过什么?
我确实用过,Find: [^a-z0-9:;]+
但之后无法跳过密码:
,所以;
我想做的是跳过从和开始的行:password here
,;password here
并且只从用户名中删除不带字母或数字的字符。
抱歉,如果我没有描述清楚,管理员可以尽可能进行编辑。
完整示例:
!start._1:stop.~1@
Sta%rs&:B!ge(s+R}\
#Step[14,:St,./\Ert`
~user@#%name^*)+:P@$$wor'";D
T&*est~!@#$%^&*()_+={}|\;pass;word123
user@#%name;password!#$~`'123
45Star^5#$Lord1:@T1esting!
u~s#e%r^n&a*m(e)t_e+s-t,:Pa:ssw/orD$+;
所需结果:
start1:stop.~1@
Stars:B!ge(s+R}\
Step:St,./\Ert`
username:P@$$wor'";D
Test;pass;word123
username;password!#$~`'123
45Star5Lord1:@T1esting!
usernametest:Pa:ssw/orD$+;
答案1
这不可能一次性完成。
以下是使用多个步骤完成此工作的方法:
- Ctrl+H
- 找什么:
^([^a-z0-9;:]*)([a-z0-9]*)(?1)(.*?[;:].+$)
- 用。。。来代替:
$2$3
- 取消勾选匹配大小写
- 检查环绕
- 检查正则表达式
- 请勿检查
. matches newline
- Replace all (点击此处多次,每次仅替换部分无效字符)
解释:
^ : begining of line
( : start group 1
[^a-z0-9;:]* : negative character class, 0 or more any character that is not alpha-num or colon or semicolon
) : end group 1
( : start group 2
[a-z0-9]* : character class, 0 or more alpha-num
) : end group 2
(?1) : re-use the pattern in group 1 (ie. [^a-z0-9;:]*)
( : group 3
.*? : 0 or more any character but newline, not greedy
[;:] : a colon or semicolon (the first that exists in a line)
.+ : 1 or more any character but newline (the password)
$ : end of line
) : end group 3
替代品:
$2 : content of group 2, the alpha-num part of the name
$3 : content of group 3, rest of the line
给定示例的结果:
start1:stop.~1@
Stars:B!ge(s+R}\
Step14:St,./\Ert` <== I guess there is a typo in your request
username:P@$$wor'";D
Test;pass;word123
username;password!#$~`'123
45Star5Lord1:@T1esting!
usernametest:Pa:ssw/orD$+;