說明:引用此文請注明出處,并務(wù)請保留后面的有效鏈接地址,謝謝!
語料庫基礎(chǔ):正則表達式常用代碼
正則表達式(Regular Expression, regex)是計算機匯編語言的一種技術(shù),用于匹配文本中的字符串。我們在使用語料庫時經(jīng)常會用到它。下面是一些最基礎(chǔ)的代碼。注意,正則表達式的代碼是區(qū)分大小寫的。
■ 常用的元字符
代碼 |
說 明 |
. |
匹配除換行符以外的任意字符 |
\w |
匹配字母、數(shù)字、下劃線或漢字 |
\s |
匹配任意的空白符 |
\d |
匹配數(shù)字 |
\b |
匹配單詞的開始或結(jié)束,即指詞的邊界 |
^ |
匹配字符串的開始 |
$ |
匹配字符串的結(jié)束 |
■ 常用的限定符
代碼 |
說 明 |
* |
重復(fù)零次或更多次 |
+ |
重復(fù)一次或更多次 |
? |
重復(fù)零次或一次 |
{n} |
重復(fù)n次 |
{n,} |
重復(fù)n次或更多次 |
{n,m} |
重復(fù)n到m次 |
*? |
重復(fù)任意次,但盡可能少重復(fù) |
+? |
重復(fù)1次或更多次,但盡可能少重復(fù) |
?? |
重復(fù)0次或1次,但盡可能少重復(fù) |
{n,m}? |
重復(fù)n到m次,但盡可能少重復(fù) |
{n,}? |
重復(fù)n次以上,但盡可能少重復(fù) |
■常用的反義代碼
代碼 |
說 明 |
\W |
匹配任意不是字母、數(shù)字、下劃線或漢字的字符 |
\S |
匹配任意不是空白符的字符 |
\D |
匹配任意非數(shù)字的字符 |
\B |
匹配不是單詞開頭或結(jié)束的位置 |
[^x] |
匹配除了x以外的任意字符 |
[^aeiou] |
匹配除了aeiou這幾個字母以外的任意字符 |
■常用分組語法
分類 |
代碼 |
說 明 |
捕獲 |
(exp) |
匹配exp,并捕獲文本到自動命名的組里 |
(?<name>exp) |
匹配exp,并捕獲文本到名稱為name的組里,也可以寫成(?'name'exp) |
(?:exp) |
匹配exp,不捕獲匹配的文本,也不給此分組分配組號 |
零寬斷言 |
(?=exp) |
匹配exp前面的位置 |
(?<=exp) |
匹配exp后面的位置 |
(?!exp) |
匹配后面跟的不是exp的位置 |
(?<!exp) |
匹配前面不是exp的位置 |
注釋 |
(?#comment) |
這種類型的分組不對正則表達式的處理產(chǎn)生任何影響,用于提供注釋讓人閱讀 |
■常用的處理選項
名 稱 |
說 明 |
IgnoreCase(忽略大小寫) |
匹配時不區(qū)分大小寫。 |
Multiline(多行模式) |
更改^和$的含義,使它們分別在任意一行的行首和行尾匹配,而不僅僅在整個字符串的開頭和結(jié)尾匹配。(在此模式下,$的精確含意是:匹配\n之前的位置以及字符串結(jié)束前的位置.) |
Singleline(單行模式) |
更改.的含義,使它與每一個字符匹配(包括換行符\n)。 |
IgnorePatternWhitespace(忽略空白) |
忽略表達式中的非轉(zhuǎn)義空白并啟用由#標(biāo)記的注釋。 |
RightToLeft(從右向左查找) |
匹配從右向左而不是從左向右進行。 |
ExplicitCapture(顯式捕獲) |
僅捕獲已被顯式命名的組。 |
ECMAScript(JavaScript兼容模式) |
使表達式的行為與它在JavaScript里的行為一致。 |
■其他補充代碼
代 碼 |
說 明 |
\a |
報警字符(打印它的效果是電腦嘀一聲) |
\b |
通常是單詞分界位置,但如果在字符類里使用代表退格 |
\t |
制表符,Tab |
\r |
回車 |
\v |
豎向制表符 |
\f |
換頁符 |
\n |
換行符 |
\e |
Escape |
\0nn |
ASCII代碼中八進制代碼為nn的字符 |
\xnn |
ASCII代碼中十六進制代碼為nn的字符 |
\unnnn |
Unicode代碼中十六進制代碼為nnnn的字符 |
\cN |
ASCII控制字符。比如\cC代表Ctrl+C |
\A |
字符串開頭(類似^,但不受處理多行選項的影響) |
\Z |
字符串結(jié)尾或行尾(不受處理多行選項的影響) |
\z |
字符串結(jié)尾(類似$,但不受處理多行選項的影響) |
\G |
當(dāng)前搜索的開頭 |
\p{name} |
Unicode中命名為name的字符類,例如\p{IsGreek} |
(?>exp) |
貪婪子表達式 |
(?<x>-<y>exp) |
平衡組 |
(?im-nsx:exp) |
在子表達式exp中改變處理選項 |
(?im-nsx) |
為表達式后面的部分改變處理選項 |
(?(exp)yes|no) |
把exp當(dāng)作零寬正向先行斷言,如果在這個位置能匹配,使用yes作為此組的表達式;否則使用no |
(?(exp)yes) |
同上,只是使用空表達式作為no |
(?(name)yes|no) |
如果命名為name的組捕獲到了內(nèi)容,使用yes作為表達式;否則使用no |
(?(name)yes) |
同上,只是使用空表達式作為no |
引用地址:
|