NotePad++ 正则表达式

前端之家收集整理的这篇文章主要介绍了NotePad++ 正则表达式前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

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

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

1 基本表达式

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

@H_502_1@2 标记和分组

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

@H_502_1@3 特殊符号

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

@H_502_1@4 字符类

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

@H_502_1@5 替换操作

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

@H_502_1@例如:

@H_502_1@Text body
@H_502_1@Search string @H_502_1@Replace string @H_502_1@Result
@H_502_1@Hi my name is Fred @H_502_1@my name is (.+) @H_502_1@my name is not \1 @H_502_1@Hi my name is not Fred
@H_502_1@The quick brown fox jumped over the fat lazy dog @H_502_1@brown (.+) jumped over the (.+) @H_502_1@brown \2 jumped over the \1 @H_502_1@The quick brown fat jumped over the fox lazy dog

@H_502_1@6 限制

@H_502_1@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代替.

@H_502_1@准备计划是使用PCRE库 library (used elsewhere in PN2) 来支持文档搜索.

@H_502_1@原文:http://www.pnotepad.org/docs/search/regular_expressions/

7应用举例

删除空白行的方法
方法
选择替换,把查找模式设置为正则表达式,在查找框中输入 ^\s+,替换框留空,点“全部替换”,即可(先全选)。
删除所有行s字符开始后面的所有字符
方法
选择替换,把查找模式设置为正则表达式,在查找框中输入 ^([^:]*):.*$,替换框填写$1,点“全部替换”,即可(先全选)。
原文链接:https://www.f2er.com/regex/358552.html

猜你在找的正则表达式相关文章