notepad 正则表达式替换 高级用法-kb88凯时官网登录

时间:2019-08-07
阅读:
免费资源网 - https://freexyz.cn/

在我们处理文件时,很多时候会用到查找与替换。当我们想将文件中某一部分替换替换文件中另一部分时,怎么办呢? 下面正则表达式 给我提供方法。

正则表达式,提供复杂 并且弹性的查找与替换

注意: 不支持多行表达式 (involving n, r, etc).

1 基本表达式

符号 解释
. 匹配任意字符,除了新一行(n)。也就是说 “.”可以匹配 r ,当文件中同时含有r and n时,会引起混乱。要匹配所有的字符,使用ss。
(…) 这个匹配一个标签区域. 这个标签可以被访问,通过语法 1访问第一个标签, 2 访问第二个, 同理 3 4 … 9。 这些标签可以用在当前正则表达式中,或则替search和replace中的换字符串。
1, 2, etc 在替换中代表1到9的标签区域(1 to 9)。例如, 查找字符串 fred([1-9])xxx 并替换为字符串 sam1yyy的方法,当在文件中找到fred2xxx的字符串时,会替换为sam2yyy。注意: 只有9个区域能使用,所以我们在使用时很安全,像102 表示区域1和文本”0”以及区域2。
[…] 表示一个字符集合, 例如 [abc]表示任意字符 a, b or c.我们也可以使用范围例如[a-z] 表示所以的小写字母。
[^…] 表示字符补集. 例如, [^a-za-z] 表示任意字符除了字母表。
^ 匹配一行的开始(除非在集合中, 如下).
$ 匹配行尾.
* 匹配0或多次, 例如 sa*m 匹配 sm, sam, saam, saaam 等等.
匹配1次或多次,例如 sa m 匹配 sam, saam, saaam 等等.
? 匹配0或者1次, 例如 sa?m 匹配 sm, sam.
{n} 匹配确定的 n 次.例如, ‘sa{2}m’ 匹配 saam.
{m,n} 匹配至少m次,至多n次(如果n缺失,则任意次数).例如, ‘sa{2,3}m’ 匹配 saam or saaam. ‘sa{2,}m’ 与 ‘saa m’相同
*?, ?, ??, {n,m}? 非贪心匹配,匹配第一个有效的匹配,通常 ‘<.>’ 会匹配整个 ‘content’字符串 –但 ‘<.?>’ 只匹配 ” .这个标记一个标签区域,这些区域可以用语法1 2 等访问多个对应1-9区域。

2 标记和分组

符号 解释
(…) 一组捕获. 可以通过1 访问第一个组, 2 访问第二个.
(?:…) 非捕获组.
(?=…) 非捕获组 – 向前断言. 例如’(.*)(?=ton)’ 表达式,当 遇到’appleton’字符串时,会匹配为’apple’.
(?<=…) 非捕获组 – 向后断言. 例如’(?<=sir) (.*)’ 表示式,当遇到’sir william’ 字符串时,匹配为’ william’.
(?!…) 非捕获组 – 消极的向前断言. 例如’.(?!e)’ 表达式,当遇到’apple’时,会找到每个字母除了 ‘l’,因为它紧跟着 ‘e’.
(? 非捕获组 – 消极向后断言. 例如 ‘(?
(?p…) 命名所捕获的组. 提交一个名称到组中供后续使用,例如’(?pa[^s] )s(?p=first)’ 会找到 ‘apple apple’. 类似的 ‘(a[^s] )s1’ 使用组名而不是数字.
(?=name) 匹配名为name的组. (?p…).
(?#comment) 批注 –括号中的内容在匹配时将被忽略。

3 特殊符号

符号 解释
s 匹配空格. 注意,会匹配标记的末尾. 使用 [[:blank:]] 来避免匹配新一行。
s 匹配非空白
w 匹配单词字符
w 匹配非单词字符
d 匹配数字字符
d 匹配非数字字符
b 匹配单词边界. ‘bww ’ 找到w开头的单词
b 匹配非单词边界. ‘beb ’ – 找到位于单子中间的字母’e’
< this matches the start of a word using scintilla’s definitions of words.
> this matches the end of a word using scintilla’s definition of words.
x 运行用x来表达可能具有其他意思的字符。例如, [ 用来插入到文本中作为[ 而不是作为字符集的开始.

4 字符类

符号 解释
[[:alpha:]] 匹配字母字符: [a-za-z]
[[:digit:]] 匹配数字字符: [0-9]
[[:xdigit:]] 匹配16进制字符: [0-9a-fa-f]
[[:alnum:]] 匹配字母数字字符: [0-9a-za-z]
[[:lower:]] 匹配小写字符: [a-z]
[[:upper:]] 匹配大写字符: [a-z]
[[:blank:]] 匹配空白 (空格 or tab):[ t]
[[:space:]] 匹配空白字符:[ trnvf]
[[:punct:]] 匹配标点字符: [-!”#$%&’()* ,./:;<=>?@[]_`{
[[:graph:]] 匹配图形字符: [x21-x7e]
[[:print:]] 匹配可打印的字符 (graphical characters and spaces)
[[:cntrl:]] 匹配控制字符

5 替换操作

使用正则表达式的标记,通过()来包围想要用的字符,然后用1 来替换字符串,第一个匹配文本。

例如:

text body search string replace string result
hi my name is fred my name is (. ) my name is not 1 hi my name is not fred
the quick brown fox jumped over the fat lazy dog brown (. ) jumped over the (. ) brown 2 jumped over the 1 the quick brown fat jumped over the fox lazy dog

6 限制

support for regular expressions in pn2 is currently limited, the supported patterns and syntax are a very small subset of the powerful expressions supported by perl. 最大的限制是正则表达式只能匹配单行,不能用多行匹配表达。可以用backslash expressions代替.

准备计划是使用pcre库 library (used elsewhere in pn2) 来支持文档搜索.

fromhttp://www.pnotepad.org/docs/search/regular_expressions/

原文链接:https://blog.csdn.net/gdp12315_gu/article/details/51730584

免费资源网 - https://freexyz.cn/
返回顶部
顶部
网站地图