npp++常用的匹配正規表示式
本文只純粹是為了最近要處理文字資料方便,而整理的npp++的正規表示式,為了自己查閱方便,非系統整理。
\r\n表示換行,其中\r表示回車,\s 空格
匹配中文
\u4e00是“一”,\u9fa5是“龥”,故可以使用:[一-龥] 正常查詢到所有的中文字。如果要匹配的中文含有標點符號,[\uFF01-\uFF5E],即[!-~]。
匹配數字
\d,匹配一位,\d+匹配兩位,\d*匹配未知位數。
匹配日期
\d*年\d*月\d*,或者 \d*-\d*-\d*
基本表示式
符號 | 解釋 |
---|---|
. | 匹配任意字元,除了新一行(\n)。也就是說 “.”可以匹配 \r ,當檔案中同時含有\r and \n時,會引起混亂。要匹配所有的字元,使用\s\S。 |
(…) | 這個匹配一個標籤區域. 這個標籤可以被訪問,通過語法 \1訪問第一個標籤, \2 訪問第二個, 同理 \3 \4 … \9。 這些標籤可以用在當前正規表示式中,或則替search和replace中的換字串。 |
\1,\2 ... | 在替換中代表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區域。 |
標記和分組
符號 | 解釋 |
---|---|
(…) | 一組捕獲. 可以通過\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) | 批註 –括號中的內容在匹配時將被忽略 |
特殊符號
符號 | 解釋 |
---|---|
\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來表達可能具有其他意思的字元。例如, [ 用來插入到文字中作為[ 而不是作為字符集的開始. |
符號 | 解釋 |
---|---|
[[: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:]] | 匹配標點字元: [-!”#$%&’()*+,./:;<=>?@[]_`{ |
[[:graph:]] | 匹配圖形字元: [\x21-\x7E] |
[[:print:]] | 匹配可列印的字元 (graphical characters and spaces) |
[[:cntrl:]] | 匹配控制字元 |
使用正規表示式的標記,通過()來包圍想要用的字元,然後用\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 |
原文出處:
相關文章
- 正規表示式同時匹配中英文及常用正規表示式
- 正規表示式匹配
- 常用正規表示式匹配程式碼介紹
- 正規表示式的多行匹配
- python 正規表示式匹配Python
- 正規表示式 多行匹配
- 匹配字母正規表示式
- leetcode - 正規表示式匹配LeetCode
- 正規表示式匹配原理
- 字串——正規表示式匹配字串
- 匹配正整數正規表示式
- 常用正規表示式
- 正規表示式匹配漢字
- 正規表示式匹配問題
- 匹配護照正規表示式
- 匹配小數正規表示式
- 匹配負數正規表示式
- 匹配整數正規表示式
- 匹配自然數正規表示式
- 匹配航班號正規表示式
- 正規表示式支配匹配模式模式
- JavaScript匹配中文正規表示式JavaScript
- 10. 正規表示式匹配
- 匹配磁力連結的正規表示式
- 匹配A股程式碼的正規表示式
- 匹配HTML註釋的正規表示式HTML
- 匹配URL的正規表示式(推薦)
- 【正規表示式】常用的正規表示式(數字,漢字,字串,金額等的正規表示式)字串
- 常用正規表示式工具
- Java常用正規表示式Java
- shell常用正規表示式
- [jQuery]常用正規表示式jQuery
- Leetcode 10. 正規表示式匹配LeetCode
- 匹配浮點數正規表示式
- 匹配二級域名正規表示式
- 匹配車牌號正規表示式
- 匹配純數字正規表示式
- 匹配html標籤正規表示式HTML