notepad++中使用正則表達式


notepad++中使用正則表達式

notepad中正則表達式的語法

首先,注意Notepad++正則表達式字符串最長不能超過69個字符。

第二,notepad中的正則表達式語法與通用的正則表達式語法以及python re模塊中支持的正則表達式語法都沒有沒有實質區別,列舉如下:

  • \ 轉義字符 如:要使用 “\” 本身, 則應該使用“\”

  • \t Tab制表符 注:擴展和正則表達式都支持

  • \r 回車符CR 注:擴展支持,正則表達式不支持

  • \n 換行符LF 注:擴展支持,正則表達式不支持

  • \r\n 正則表達式可表示回車換行

  • . 匹配任意一個字符

  • ^ 其右邊的表達式被匹配在行首。如:^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”;\r?\n匹配行結尾符

  • () 影響表達式匹配的順序(類似C++的小括號會影響表達式運算順序),並且用作表達式的分組標記(標記從1開始)如:([a-z]bc)smn\1匹配“tbcsmntbc”;另見:看下文的示例

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

  • \d 匹配一個數字字符。等價於:[0-9]

  • \D \d取反,匹配一個非數字字符。等價於:[^0-9]

  • \s 匹配任意單個空白字符:包括空格、制表符等(注:不包括換車符和換行符)。等價於:[ \t]

  • \S \s取反的任意單個字符。

  • \w 匹配包括下划線的任意單個字符。等價於:[A-Za-z0-9_]

  • \W \w 取反的任意單個字符。等價於:[^A-Za-z0-9_]

  • \b 匹配單詞起始處或結尾處

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:]] 匹配一個空白(空格或者制表符):[ \t]
[[:space:]] 匹配一個空白符:[ \t\r\n\v\f]
[[: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, 查找目標輸入 ;

替換為輸入,\r\n

點擊全部替換后的結果為

libX11CR|LF
lksctpCR|LF
mailcapCR|LF

刪除多余的空行

原始文檔內容為

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

目標是,刪除多余的空行。
ctrl H, 查找目標為\r\n\r\n
替換為輸入\r\n
點擊全部替換,全部替換也需要多點擊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

參考


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM