添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
飞翔的甜瓜  ·  海通证券·  2 月前    · 
天涯  ·  New IPs are added to ...·  5 年前    · 

有时需要使用正则表达式进行一些复杂的匹配,以便快速完成操作,以此做笔记。以便后续翻阅。

0x01 常见表达式

.匹配任何一个字符,每行逐一匹配,而不匹配换行序列(\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

print

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 新行.

() 影响表达式匹配的顺序,并且用作表达式的分组标记.

0x02 综合应用

  • #此处是空白
  • 其他部门的日常咨询。# 此处行的开头是空白,但中间存在内容

以上是空白行已经开头是空白的两行  || 要查找空白行或者开行是空格,则输入 ^\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  替换为空。

  • 4.111. [高风险] 越权访问   17   ||  要保留 高|中|低, 则输入:[^\高|\中|\低|\n]  选择替换,即可只保留高、中、低字符  。
  • 4.111. [高风险] 越权访问   17   ||  要保留 越权访问,则输入:.*]\s|\s\d+$   选择替换,即可只保留越权访问字符  。

0x03 参考文章:

https://npp-user-manual.org/docs/searching/#extended-search-mode

https://blog.csdn.net/yuyehui/article/details/104332359

https://blog.csdn.net/wangkai_123456/article/details/55254598 https://blog.csdn.net/chenxiaoscode/article/details/79172012
Notepad++ | 正则表达式 替换引言 正则 化入门进阶 我们在用各种文本编辑器,比如word、txt、vscode等时,有时候都会通过查找以及替换方便批操作。比如,去掉所有:符号,这些简单操作可以用于许多简单问题。但是对于更复杂的问题则比较难解决了,比如我想将所有[***]的[]去掉,留下***,而且不希望其他地方的[]被改动,这个时候就要用到 正则 化了。 Notepad++ 的替换操作支持 正则表达式 替换。结合 正则 化的背景也能完成一些基本操作,但是更复杂的时候就需要更多技巧了,这里列一下,放遗忘 ???
定义一个匹配区域,该区域匹配的内容可以用标签 \1 \2 按照顺序使用,这些标签可以用在当前表达式,也可以用在替换表达式。( \1 表示第一个匹配内容,\2表示第二个,以此类推) 匹配字符集中的一个字符,[a-z] 匹配一个小写字母,[0-9]匹配一个数字,[A-Za-z]匹配一个字母,[0-9A-Za-z]匹配一