NotePad++ 正則表示式替換 高階用法
在我們處理檔案時,很多時候會用到查詢與替換。當我們想將檔案中某一部分替換替換檔案中另一部分時,怎麼辦呢? 下面正則表示式 給我提供方法。
正則表示式,提供複雜 並且彈性的查詢與替換
注意: 不支援多行表示式 (involving \n, \r, etc).
1 基本表示式
符號 | 解釋 |
---|---|
. | 匹配任意字元,除了新一行(\n)。也就是說 “.”可以匹配 \r ,當檔案中同時含有\r and \n時,會引起混亂。要匹配所有的字元,使用\s\S。 |
(…) | 這個匹配一個標籤區域. 這個標籤可以被訪問,通過語法 \1訪問第一個標籤, \2 訪問第二個, 同理 \3 \4 … \9。 這些標籤可以用在當前正則表示式中,或則替search和replace中的換字串。 |
\1, \2, etc | 在替換中代表1到9的標籤區域(\1 to \9)。例如, 查詢字串 Fred([1-9])XXX 並替換為字串 Sam\1YYY的方法,當在檔案中找到Fred2XXX的字串時,會替換為Sam2YYY。注意: 只有9個區域能使用,所以我們在使用時很安全,像\10\2 表示區域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]+)\s\1’ 使用組名而不是數字. |
(?=name) | 匹配名為name的組. (?P…). |
(?#comment) | 批註 –括號中的內容在匹配時將被忽略。 |
3 特殊符號
符號 | 解釋 |
---|---|
\s | 匹配空格. 注意,會匹配標記的末尾. 使用 [[:blank:]] 來避免匹配新一行。 |
\S | 匹配非空白 |
\w | 匹配單詞字元 |
\W | 匹配非單詞字元 |
\d | 匹配數字字元 |
\D | 匹配非數字字元 |
\b | 匹配單詞邊界. ‘\bW\w+’ 找到W開頭的單詞 |
\B | 匹配非單詞邊界. ‘\Be\B+’ – 找到位於單子中間的字母’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:]] | 匹配空白字元:[ \t\r\n\v\f] |
[[:punct:]] | 匹配標點字元: [-!”#$%&’()*+,./:;<=>[email protected][]_`{ |
[[: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) 來支援文件搜尋.
相關推薦
NotePad++ 正則表示式替換 高階用法
在我們處理檔案時,很多時候會用到查詢與替換。當我們想將檔案中某一部分替換替換檔案中另一部分時,怎麼辦呢? 下面正則表示式 給我提供方法。 正則表示式,提供複雜 並且彈性的查詢與替換 注意: 不支援多行表示式 (involving \n, \r, etc).
notepad++正則表示式替換字串詳解
正則表示式是一個查詢的字串,它包含一般的字元和一些特殊的字元,特殊字元可以擴充套件查詢字串的能力,正則表示式在查詢和替換字串的作用不可忽視,它 能很好提高工作效率。 EditPlus的查詢,替換,檔案中查詢支援以下的正則表示式: 表示式 說明 /t 製表符.
notepad++ 正則表示式 高階查詢替換技巧(一)
正則表示式:(^\w+$) 替換式:db2 \"delete from \1 \" \r\ndb2 \"import from \.\/data\/\1\.ixf of ixf modified by identityignore insert into \1 \" 輸入
Source Insight中使用正則表示式進行高階替換
問題描述: 程式碼中有個斷言函式,假設叫MyAssert,只有一個引數,用法例如: MyAssert(a >
正則表示式的高階使用技巧
零寬斷言: 零寬斷言是正則表示式的一種方法,用於查詢在某些內容(但並不包括這些內容)之前或者之後的東西,也就是說他們像\b(匹配一個單詞邊界,也就是單詞和空格間的位置,正則表示式的匹配有兩種概念,一種是匹配字元,一種是匹配位置,這裡的\b就是匹配位置,例如,“er\b”可以匹配“neve
正則表示式matcher.group用法--轉自winter8
正則表示式matcher.group用法 部落格分類: 演算法 本貼來自 http://hi.baidu.com/cnjsp/blog/item/f5449d824c5102
Python | 正則表示式的常見用法
正則表示式的常見用法分為兩塊內容,第一部分是一般具有正則的高階語言都支援的功能,第二部分講解Python所獨特具備的正則特性。 Part 1 正則表示式是由普通字元(例如字元a到z)以及特殊字元(稱為“元字元”)組成的文字模式。模式用於在搜尋文字時要匹配一個或多個字串。
js正則表示式替換(web作業)
運用正則表示式匹配“Paul;Puala,Pauline,paul,Paul”中的所以Paul,並將其替換成Ringo 程式碼如下: <!DOCTYPE html> <html> <head> <title>替換&
php正則表示式替換圖片地址
<?php /*PHP正則提取圖片img標記中的任意屬性*/ $str = '<center><img src="/uploads/images/20100516000.jpg" height="120" width="120"><br />PHP正則提取
使用正則表示式替換字串
實現效果: 知識運用: Regex類的Replace()方法:用於替換在指定字串內匹配正則式的字串為某字串 public static string Replace(string input,string pattern,string replacement) input 
(轉)正則表示式中^的用法
https://www.cnblogs.com/ytc6/p/8478989.html 用法一: 限定開頭 文件上給出瞭解釋是匹配輸入的開始,如果多行標示被設定成了true,同時會匹配後面緊跟的字元。&n
正則表示式替換HTML標籤小寫為大寫
c#在獲取游標時focus方法和select方法有什麼不同呢datagridview的列的DefaultCellStyle.Format設定問題c#在獲取游標時focus方法和select方法有什麼不同呢datagridview的列的DefaultCellStyle.Form
JS正則表示式的常用用法
1、js擷取兩個字串之間的內容: var str = "123456"; str = str.match(/123(\S*)56/)[1]; alert(str);//結果4 2、js擷取某個字串前面的內容: var str = "123456"; tr = str.match(/(\S
Mysql中正則表示式Regexp常見用法
Mysql中Regexp常見用法 模糊匹配,包含特定字串 # 查詢content欄位中包含“車友俱樂部”的記錄 select * from club_content where content regexp '車友俱樂部' # 此時的regexp與lik
Java正則表示式替換移除空行和多餘的空格
這幾天重拾Java寫程式碼,需要操作文字檔案中的內容。 最終,要把內容裡的空行和多餘的連續空格移除,使用String裡的replace或者replaceAll,試了很多次都沒有成功。 最後發現需要使用正則表示式Regex。先把解決方案共享如下。 1. 移除多餘的連續空格,只
Myeclipse正則表示式替換程式碼
用MyEclipse 開發時,如遇到多出程式碼需要替換,可以使用快捷鍵CTRL + H 搜尋,搜尋是支援正則表示式的 如下圖: 1處填寫正則表示式, 2處選中 Regular expression 支援 3處對檔案型別
ios 正則表示式替換
1. 不可變字串 (content 是不可變) NSRegularExpression *regularExpression = [NSRegularExpressionregularExpressionWithPattern:
Notepad++ 正則快速替換 佔位符
經常用的一個文字工具 Notepad++ ,支援正則快速替換。記錄一下替換方法 Ctrl+f替換 查詢模式選中正則,查詢目標使用正則表示式,替換為可以使用正則表示式中的選中項。 全部替換完成 例項 程式碼片段 &
java使用replaceAll的正則表示式替換,非常好用
package com.blog.test; import java.util.regex.Matcher; import java.util.regex.Pattern; public class TEst { public static void main(St
iphone開發使用得替換方法及正則表示式替換
替換: [mutablestring replaceOccurrencesOfString:@"<" withString:@"<" options:0 range:NSMakeRange(0,[mutablestring length]