android 带搜索的编缉框 带搜索功能的编辑器_notepad++



看到这里你一定会觉得这个有什么好学习的呀!哈哈,没错,上面这些内容大家都是知道的常识。不过,从上面的图上大家可以发现,notepad++支持三种搜索模式:

  • 正常模式
  • 扩展模式
  • 正则表达式模式

常用表达式

下面列出了一些常用的正则表达式匹配符号,便于各位同学查找和学习。

字符

说明

.

匹配任意一个字符

*

匹配前面的字符0或多次,比如,ab*匹配“a”,“ab”或“abb”

+

匹配前面的字符1次或多次,比如,ab+匹配“ab”或“abb”,但不匹配“a”

?

匹配前面的字符0或者1次,比如,ab?匹配“a”或“ab”,但不匹配“abb”

{n}

匹配前面的字符或分组 n 次,比如,ab{2}c 匹配 “abbc”.

{m,n}

匹配前面的字符或分组,最少m次,最多n次(若n为空,则代表任意次),比如,ab{2,3}c 匹配 “abbc” 或 “abbbc”

^

右侧的表达式匹配在一行的开始,比如,^a匹配以“a”开头的行

$

左侧的表达式被匹配在一行的结尾,比如,z$匹配以“z"结尾的行

[]

匹配列表中任意单个字符,比如,[ab]匹配“a”或“b”;[0-9]匹配任意单个0-9的数字

[^]

匹配列表外任意单个字符,比如,[^ab]匹配“a”和“b”以外的单个字符

\w

匹配单个字符,包括下划线,相当于[A-Za-z0-9_]

\W

匹配非单个字符,相当于[^A-Za-z0-9_]

\d

匹配数字字符,相当于[0-9]

\D

匹配非数字字符,相当于[^0-9]

\b

匹配单词边界(开头或结尾),比如,\bhe匹配“hello”,但不匹配“ahello”

\B

匹配非单词边界

|

或运算符,匹配左边或者右边的表达式

\s

匹配空白格

\S

匹配非空白格

\\

匹配字符\

\t

匹配Tab制表符

\r

匹配回车符号

\n

匹配换行符号

\r\n

匹配回车换行

标记和分组

上面的符号是对一个字符或重复一个字符的情况,但是,如果是多个字符怎么办呢?我们就需要用到分组了,关于分组可以使用小括号()来指定分组表达式,例如:(abc)? 表示匹配0个或1个abc, 这里一个括号的表达式就是一个分组 。分组可以分为两种形式,捕获组和非捕获组。捕获组可以通过从左到右计算其开括号来编号;而非捕获组是以 (?) 开头的组,它不捕获文本。

字符

说明

(…)

一组捕获. 可以通过\1 访问第一个组, \2 访问第二个.

(?:…)

非捕获组.

(?=…)

非捕获组 – 向前断言. 例如(.*)(?=ton) 表达式,当 遇到’Appleton’字符串时,会匹配为’Apple’.

(?<=…)

非捕获组 – 向后断言. 例如(?<=sir) (.*) 表示式,当遇到’sir William’ 字符串时,匹配为’ William’.

(?!…)

非捕获组 – 消极的向前断言. 例如(?!e) 表达式,当遇到’Apple’时,会找到每个字母除了 ‘l’,因为它紧跟着 ‘e’.

(?<!...)

非捕获组 – 消极向后断言. 例如, (?<!sir) (.*)(?=ton), 当遇到 ‘sir William’ 时,会匹配 ’ William’.

(?P<name>…)

命名所捕获的组. 提交一个名称到组中供后续使用,例如(?PA[^\s]+)\s(?P=first) 会匹配 ‘Apple Apple’. 类似于 (A[^\s]+)\s\1 ,不过使用的是组名而不是数字.

(?=name)

匹配名为name的组.

(?#comment)

批注 –括号中的内容在匹配时将被忽略。

细心的同学一定会发现,除了搜索功能支持正则表达在外,notepad++的替换功能同样也是支持正则表达式的。上面的这些符号在替换中也是同样适用的。