正则表达式总结及一些有用的例子
背景
正則表達式的用處十分廣泛:字符串處理、輸入驗證等,特別是在爬取網頁中對網頁內容的清洗更需要正則。
正則表達式
基本所有的語言都支持正則表達式,或者內置或者引入。正則的語法很多,但每種語言對正則支持的程度都不同(常用的語法規則基本都支持),這點需要格外注意。
? ? ? 元字符
正則表達式有12個特殊的標點,也稱為元字符。它們包括:$ ( ) * . ? [ \ ^ { |。
? ?正則表達式中照字面匹配這些元字符,需要在它們的前面加入一個反斜杠來進行轉義。
注意:元字符不包括右方括號 ]、連字號 -、右花括號 }。前兩個字符只有在沒有轉義的 [ 之后才是元字符,} 只有在沒有轉義的 { 之后才是元字符。不要碰到一個標點字符就進行轉義,盡管不會影響正則表達式的正確性。
? ? ? 一些栗子
1.區分大小寫:(?i)[A-F0-9] 可以匹配大小寫A-F 2.單行和多行模式:(?s)單行模式,點號匹配換行符;(?m)多行模式 3.整個單詞的邊界:匹配 my cat is brown中的cat,不匹配category中的cat \bcat\b;反過來的話是 cat\B 4.由三個字符<(?:>開始的是一個非捕獲分組,右括號<)>標記該分組的結束。非捕獲分組不會破壞捕獲分組的編號;另外,它性能較高;在非捕獲分組中還可以使用模式修飾符 肯定型環視。My <b>cat</b> if furry.找到HTML粗體標記的文本,但不要標記:(?i)(?<=<b>)\w (?=</b>)。 肯定型逆序環視是唯一可以從右向左遍歷目標文本的正則結構,其語法是(?<=text),text在不同的正則流派中不一樣,但總是可以放入字面文本。 肯定型順序環視的語法是(?=regex),regex表示你可以放入任何正則內容。 否定型環視。把肯定型環視中的=換成!,就構成了否定型環視?注意:逆序環視中的text在不同的正則流派中支持是不同的。Perl、Python、Ruby 1.9允許使用多選結構和字符類來把多個不同固定長度的字面字符串放入環視中。PCRE、Java允許在逆序環視中使用任意有限長度的正則表達式,即無限量詞 * {n,} 不能使用。 .NET允許在環視中使用任何正則表達式。逆序環視用起來方便,但其速度很一般
?通過“寬松排列模式”向正則表達式中添加注釋,Java通過Pattern.COMMENTS或在正則表達式前面增加(?x)打開。注釋以 # 開頭
查找XML格式的標簽: 速成方案:<[^>]*> 在屬性值中允許出現 > : <(?:[^>'"]|"[^"]*"|'[^']*')*> (X)HTML標簽(靈活方案):</?([A-Za-z][^\s>/]*)(?:[^>'"]|"[^"]*"|'[^']*')*> (X)HTML標簽(嚴格方案):(?i)<(?:([A-Z][-:A-Z0-9]*)(?:\s [A-Z][-:A-Z0-9]*(?:\s*=\s*(?:"[^"]*"|'[^']*'|[-.:\w] ))?)*\s*/?|/([A-Z][-:A-Z0-9]*)\s*)>
更多專業前端知識,請上 【猿2048】www.mk2048.com 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎
總結
以上是生活随笔為你收集整理的正则表达式总结及一些有用的例子的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机打发票打印管理
- 下一篇: 9.1定时器 小时分秒