有时需要使用正则表达式进行一些复杂的匹配,以便快速完成操作,以此做笔记。以便后续翻阅。
.匹配任何一个字符,每行逐一匹配,而不匹配换行序列(\r或\n)。单独. 将匹配每行的每一个字符
* 其左边的字符被匹配任意次(0次或者多次). 例如 "be*" 匹配 "b", "be" 或者 "bee".
+ 其左边的字符被匹配至少一次(1次或者多次). 例如 "be+" 匹配 "be" 或者 "bee" 但是不匹配 "b".
? 其左边的字符被匹配0次或者1次. 例如 "be?" 匹配 "b" 或者 "be" 但是不匹配 "bee".
^ 其右边的表达式被匹配在一行的开始. 例如 "^A" 仅仅匹配以 "A" 开头的行.
$ 其左边的表达式被匹配在一行的结尾. 例如 "e$" 仅仅匹配以 "e" 结尾的行.
| 匹配表达式左边和右边的字符. 例如, "ab|bc" 匹配 "ab" 或者 "bc".
[] 匹配列表之中的任何单个字符. 例如, "[ab]" 匹配 "a" 或者 "b". "[0-9]" 匹配任意数字;[a-z],从a to到任何字符z;
[^] 匹配列表之外的任何单个字符. 例如, "[^ab]" 匹配 "a" 和 "b" 以外的字符; "[^0-9]" 匹配任意非数字字符; [^A-Za-z]表示除字母字符之外的任何字符。
[[:name:]]或[[:☒:]]⇒整个名为name的字符类。 对于许多人来说,还有一个单字母的short”类名☒。 请注意:[:name:]和[:☒:]必须在字符类[...]中才能具有特殊含义。
short |
full name |
description |
equivalent character class |
alnum |
letters and digits |
||
alpha |
letters |
||
h |
blank |
spacing which is not a line terminator |
[\t\x20\xA0] |
cntrl |
control characters |
[\x00-\x1F\x7F\x81\x8D\x8F\x90\x9D] |
|
d |
digit |
digits |
|
graph |
graphical character, so essentially any character except for control chars, \0x7F, \x80 |
||
l |
lower |
lowercase letters |
|
|
printable characters |
[\s[:graph:]] |
|
punct |
punctuation characters |
[!"#$%&'()*+,\-./:;<=>?@\[\\\]^_{ |
|
s |
space |
whitespace (word or line separator) |
[\t\n\x0B\f\r\x20\x85\xA0\x{2028}\x{2029}] |
u |
upper |
uppercase letters |
|
unicode |
any character with code point above 255 |
[\x{0100}-\x{FFFF}] |
|
w |
word |
word characters |
[_\d\l\u] |
xdigit |
hexadecimal digits |
[0-9A-Fa-f] |
\☒ ⇒这样,转义符。如要搜索\,则输入\\ 。要搜索[ , 则输入\[ 。 其中
\d 匹配任意数字,相当于:[0-9]。 \D 匹配非任意数字的任意字符,相当于[^[0-9]]
\l 匹配任意小字母,notepad++ 需要勾选【匹配大小写】,相当于[a-z]。 \L 匹配非小写字母的任意字符,相当于[^[a-z]]
\u 匹配任意大字母,notepad++ 需要勾选【匹配大小写】,相当于[A-Z]。 \U 匹配非小写字母的任意字符,相当于[^[A-Z]
\s 匹配空格(单词或行分隔符),相当于[[:space:]] 。 \S 匹配所有非空格(单词或行分隔符),相当于[^[:space:]]
\w 匹配任意单词,即除了标点和空格的所有字符。 \W 匹配除了字母数字外的所有标点、空格的字符
\h 匹配水平空间每一行当中的字符为空的地方,可以理解为空格。\H 匹配非水平空间
\v 匹配垂直空间每一行当中的字符为空的地方,可以理解为空格。\H 匹配非垂直空间
\t 制表符.
\n 新行.
() 影响表达式匹配的顺序,并且用作表达式的分组标记.
以上是空白行已经开头是空白的两行 || 要查找空白行或者开行是空格,则输入 ^\s || 要查找空白行,则输入:\r\n\r\n, 选择替换 为空,即可删除完全空白的行。
要查找每行的行首 || 要定位在每行的行首,则输入:^ 即可定位在每行的行首。
要查找每行的行尾 || 要定位在每行的行尾,则输入:$ 即可定位在每行的行尾。
4.111. [高风险] 越权访问 17 || 要查找4.111. [, 则输入:^\d.*\[ 选择替换,即可将4.111. [替换为空。
4.111. [高风险] 越权访问 17 ||要查找 高风险] 则输入:...]\s 选择替换,即可将 高风险] 替换为空。
4.111. [高风险] 越权访问 17 || 要查找4.111. [高风险] 则输入:^\d.*\[...]\s 选择替换,即可将4.111. [高风险] 替换为空。
4.111. [高风险] 越权访问 17 || 要查找 17 则输入:\s\d+$ 选择替换,即可将 17 替换为空。
4.111. [高风险] 越权访问 17 || 要查找 ] 越权访问 17 则输入:].* 选择替换,即可将 ] 越权访问 17 替换为空。
https://npp-user-manual.org/docs/searching/#extended-search-mode
https://blog.csdn.net/yuyehui/article/details/104332359