nodepad++正则表达式学习
最近用的
配合PowerToys中的PowerRename功能,给一系列文件重命名(前面补齐0)
# 正则表达式
(.+)
# 替换模式
0$&
目的
保留每行开头"和\MusicParty及其后面的文本
实现01
查找目标
^".*\\MusicParty
替换
"\\MusicParty
实现02
查找目标
^"([^"]*\\MusicParty)
替换
"\1
在正则表达式中,使用括号 () 来捕获你想保留的部分。
在替换部分使用反向引用 \1 来引用捕获组。
原文本
"E:\备份\音趴\windows调试用\MusicParty\BilibiliApi\BilibiliApi.cs"
"E:\备份\音趴\windows调试用\MusicParty\MusicApiContract\Music.cs"
"E:\备份\音趴\windows调试用\MusicParty\music-party\pages\index.tsx"
"E:\备份\音趴\windows调试用\MusicParty\music-party\src\api\api.ts"
"E:\备份\音趴\windows调试用\MusicParty\music-party\src\api\musichub.ts"
"E:\备份\音趴\windows调试用\MusicParty\music-party\src\components\musicplayer.tsx"
"E:\备份\音趴\windows调试用\MusicParty\NeteaseCloudMusicApi\NeteaseCloudMusicApi.cs"
"E:\备份\音趴\windows调试用\MusicParty\QQMusicApi\QQMusicApi.cs"
替换后文本
"\MusicParty\BilibiliApi\BilibiliApi.cs"
"\MusicParty\MusicApiContract\Music.cs"
"\MusicParty\music-party\pages\index.tsx"
"\MusicParty\music-party\src\api\api.ts"
"\MusicParty\music-party\src\api\musichub.ts"
"\MusicParty\music-party\src\components\musicplayer.tsx"
"\MusicParty\NeteaseCloudMusicApi\NeteaseCloudMusicApi.cs"
"\MusicParty\QQMusicApi\QQMusicApi.cs"
常用的:
查找目标:
([ABCD])\.
替换为:
\1.
或者
$1.
或者
\t\1.
也可以用转义字符
\1 $1是和括号配合用的
注意!!!!!!!!!,有些地方只能使用替换模式$
$&:引用整个正则匹配到的字符串(等同于 $0)。
$1:匹配到第一个正则括号里的
$2:匹配到第二个正则括号里的
可以在这个网址测试 https://regexr-cn.com/
作用:
在选项前面加四个空行(一个制表符)
参考:
http://www.nndssk.com/rjwt/155408wNRbtY.html
https://blog.csdn.net/In_engineer/article/details/126267048
http://t.zoukankan.com/lengjk-p-13172724.html
https://blog.csdn.net/pipisorry/article/details/21781111
这里的".*"中的"."代表的是匹配一切字符与此类似的有
"s" 匹配所有空白字符(包括制表符); "S"匹配所有字符串
"d" 匹配所有数字 "D"匹配所有非数字
"*" 代表的是贪婪匹配模式意思为连续匹配到符合条件的最后一个,直至匹配到不符合条件的字符为止
与此类似的有
"?"只匹配到一个 "+"匹配到一个或者更多
"*"的意思是0个或者所有
| 符号 | 含义 |
|---|---|
| . | 代表除换行符外的任意字符 |
| * | 代表匹配零次或者多次 |
| \ | 这个就是转义字符,匹配符号的时候在符号前面加上这个 |
| [^ ] | 匹配非单个空格,和*组合一起就代表匹配零个或者多个非空格字符串 |
. 匹配任意字符.
| 匹配表达式左边和右边的字符. 例如, “ab|bc” 匹配 “ab” 或者 “bc”.
[] 匹配列表之中的任何单个字符. 例如, “[ab]” 匹配 “a” 或者 “b”. “[0-9]” 匹配任意数字.
[^] 匹配列表之外的任何单个字符. 例如, “[^ab]” 匹配 “a” 和 “b” 以外的字符. “[^0-9]” 匹配任意非数字字符.
* 其左边的字符被匹配任意次(0次,或者多次). 例如 “be*” 匹配 “b”, “be” 或者 “bee”.
+ 其左边的字符被匹配至少一次(1次,或者多次). 例如 “be+” 匹配 “be” 或者 “bee” 但是不匹配 “b”.
? 其左边的字符被匹配0次或者1次. 例如 “be?” 匹配 “b” 或者 “be” 但是不匹配 “bee”.
^ 其右边的表达式被匹配在一行的开始. 例如 “^A” 仅仅匹配以 “A” 开头的行.
把下划线换成括号
_+
\( \)
把括号标准化
[\(|(][ \t]*[\)|)]
\( \)
==合并上面两者==
_+|([\(|(][ \t]*[\)|)])
\( \)
删掉多余空行
(\r\n)+\r\n
\r\n
去除行尾多余空格和制表符
[ \t]+\r\n
\r\n
==合并上面两者==
([ \t]+|(\r\n)+)\r\n
\r\n
去掉选项(或题号)与选项内容之间的空白
(([A-Z]|[0-9]+)\.)[ \t\n]
\1
处理选项号和选项分离现象
([A-Z]\.)\r\n
\1
去掉我的答案,只保留正确答案
我的答案: .*(正确答案.+\r\n)
\1
去掉每道题最末尾的分
\r\n[0-9]+(.?[0-9]+)?分\r\n
\r\n
去除末尾答案解析
\r\n答案解析.*\r\n
\r\n
去掉判断题的选项
\r\nA.对\r\nB.错\r\n
\r\n
在选项前面加一个缩进
([A-Z])\.
\t\1.
问题:
notepad++替换正则表达式,替换目标为不符合表达式[ ]*
要替换不符合正则表达式 [ ]*<DT><A HREF="(.+)</A>\r\n 的目标,可以使用以下正则表达式:
cssCopy code
^(?!.*[ ]*<DT><A HREF="(.+)</A>\r\n).+$
这个正则表达式使用了负向前瞻(negative lookahead),它会匹配任何不包含 [ ]*<DT><A HREF="(.+)</A>\r\n 的行,然后将整行替换掉。具体来说:
^匹配行的开头(?!.*[ ]*<DT><A HREF="(.+)</A>\r\n)是一个负向前瞻,它会查找这一行是否包含[ ]*<DT><A HREF="(.+)</A>\r\n,如果包含则不匹配.+匹配该行的所有字符$匹配行的结尾
因此,将上面的正则表达式作为替换的目标,可以将不符合条件的行全部替换掉。