• notepad++中使用正则表达式


    notepad++中使用正则表达式

    notepad中正则表达式的语法

    首先,注意Notepad++正则表达式字符串最长不能超过69个字符。

    第二,notepad中的正则表达式语法与通用的正则表达式语法以及python re模块中支持的正则表达式语法都没有没有实质区别,列举如下:

    • 转义字符 如:要使用 “” 本身, 则应该使用“”

    • Tab制表符 注:扩展和正则表达式都支持

    • 回车符CR 注:扩展支持,正则表达式不支持

    • 换行符LF 注:扩展支持,正则表达式不支持

    • 正则表达式可表示回车换行

    • . 匹配任意一个字符

    • ^ 其右边的表达式被匹配在行首。如:^A匹配以“A”开头的行

    • $ 其左边的表达式被匹配在行尾。如:e$匹配以“e”结尾的行

    • | 或运算符,匹配表达式左边和右边的字符串。如:ab|bc匹配“ab”或“bc”

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

    • [^] 匹配列表之外的任意单个字符。如:[ab]匹配“a”和“b”以外的单个字符;[0-9]匹配任意单个非数字字符

    • *其左边的字符被匹配任意次(0次或多次)。如:be*匹配“b”,“be”或“bee”

    • + 其左边的字符被匹配至少一次(1次或多次)。如:be+匹配“be”或“bee”,但不匹配“b”

    • ? 其左边的字符被匹配0次或者1次。如:be?匹配“b”或“be”,但不匹配“bee”; ? 匹配行结尾符

    • () 影响表达式匹配的顺序(类似C++的小括号会影响表达式运算顺序),并且用作表达式的分组标记(标记从1开始)如:([a-z]bc)smn1匹配“tbcsmntbc”;另见:看下文的示例

    • {} 指定前面的字符或分组的出现次数 如:abc{3}匹配abccc;a(bc){2}匹配abcbc

    • d 匹配一个数字字符。等价于:[0-9]

    • D d取反,匹配一个非数字字符。等价于:[^0-9]

    • s 匹配任意单个空白字符:包括空格、制表符等(注:不包括换车符和换行符)。等价于:[ ]

    • S s取反的任意单个字符。

    • w 匹配包括下划线的任意单个字符。等价于:[A-Za-z0-9_]

    • W w 取反的任意单个字符。等价于:[^A-Za-z0-9_]

    •  匹配单词起始处或结尾处

    notepad中常用的正则表达式类

    下表中列举的内容,左侧pattern 或者meaning列中的冒号后面的表达式,都可以用于在notepad 查找窗口中的正则表达式模式下的查找目标,就可以匹配相应的内容。

    Pattern Meaning
    [[:alpha:]] 匹配一个英文字母: [A-Za-z]
    [[:digit:]] 匹配一个数字: [0-9]
    [[:xdigit:]] 匹配一个十六进制数字: [0-9A-Fa-f]
    [[:alnum:]] 匹配一个字母数字: [0-9A-Za-z]
    [[:lower:]] 匹配一个小写英文字母: [a-z]
    [[:upper:]] 匹配一个大写英文字母: [A-Z]
    [[:blank:]] 匹配一个空白(空格或者制表符):[ ]
    [[:space:]] 匹配一个空白符:[ vf]
    [[:graph:]] 匹配一个图形字符: [x21-x7E]
    [[:print:]] 匹配可打印字符(图形字符和空格)
    [[:cntrl:]] 匹配控制(control)字符
    [[:punct:]] 匹配一个标点字符:[-!"#$%&'()*+,./:;<=>?@[]_`{

    notepad中查找窗口的关于正则表达式的参数说明

    • 正则表达式的选中点:表示你在查找中输入的内容是一个正则表达式

    • 匹配新行的复选框:如果如果选中该复选框,则表示使用点时,不是针对每一行而是针对整个文档进行搜索。大多数的使用场景下,不勾选该复选框。

    notepad正则表达式不能选择匹配内容

    注意:notepad++ 不支持匹配提取。 一般操作正则表达式主要是用来匹配查找、匹配替换。

    这个提取问题可以使用sublime text来进行实现, SublimeText可以选中所有匹配项。
    另外EmEditor也可以选中正则表达式的匹配项,但是EmEditor这个软件不是开源的,也不是免费的,所以推荐还是使用sublime text。

    notepad正则表达式使用举例

    正则表达式提取分隔符前的内容

    举例:notepad文档中的输入内容如下(注意以下每行结尾都有换行符CR|LF)

    libX11-1.6.5
    lksctp-tools-1.0.17
    mailcap-2.1.41
    

    ctrl H, 查找目标输入 ([^-]*).*

    替换为输入,1

    点击全部替换后的结果为

    libX11
    lksctp
    mailcap
    

    正则表达式替换一个分隔符为换行符

    原始文档为

    libX11;lksctp;mailcap;
    

    ctrl H, 查找目标输入 ;

    替换为输入,

    点击全部替换后的结果为

    libX11CR|LF
    lksctpCR|LF
    mailcapCR|LF
    

    删除多余的空行

    原始文档内容为

    libX11CR|LF
    CR|LF
    CR|LF
    lksctpCR|LF
    CR|LF
    mailcapCR|LF
    

    目标是,删除多余的空行。
    ctrl H, 查找目标为
    替换为输入
    点击全部替换,全部替换也需要多点击2次,就可以看到所有的空行被删除了。
    替换后结果为:

    libX11CR|LF
    lksctpCR|LF
    mailcapCR|LF
    

    正则匹配并按匹配组进行替换

    正则表达式支持带标记的表达式(tagged expressions)。使用包围要标记的文本,然后在替换字符串中使用 1替换第一个匹配的文本,用 2替换第二个匹配的文本,即可完成此操作。举例如下:

    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

    参考

  • 相关阅读:
    pop动画
    CoreData的用法
    高德地图详细使用方法
    GDataXML配置过程
    图片懒加载(仿SDWebImage)
    GCD创建单例
    多线程-多线程基础
    Zookeeper-集群与单机实践
    oracle-union all与order by联合使用
    分布式和集中式架构
  • 原文地址:https://www.cnblogs.com/songbiao/p/12470163.html
Copyright © 2020-2023  润新知