MATLAB里的正則表達式 [轉]


正則表達式在處理字符串及文本時顯得十分方便,在perl, python等腳本語言,以及java, .net等平台上都支援正則表達式。事實上,在MATLAB中也提供了正則表達式的支持。主要包含三個常用的函數:regexp(), regexpi(), regexprep()。其中regexp()用來匹配正則表達式,regexpi()完成類似的功能,但是忽略字符串的大小寫,regexprep()則按照指定的pattern完成替換功能。
MATLAB正則表達式主要包含以下特殊匹配符號:
. 匹配任何單個字符(包括空白字符)
[abc] 匹配括號里包含的任何單個字符,a或b或c
[^abc] 匹配括號中字符以外的任何單個字符,任何除a和b和c外的字符
[a-x] 匹配a-x范圍內的任何單個字符
\s 匹配任何空白字符,等效於[ \f\n\r\t\v]
\S 匹配任何非空白字符,等效於[^ \f\n\r\t\v]
\w 匹配任何字母,數字或下划線字符,對於英文字符集,等效於[a-zA-Z_0-9]
\W 匹配任何除了字母,數字或下划線以外的字符,對於英文字符集,等效於[^a-zA-Z_0-9]
\d 匹配任何數字,等效於[0-9]
\D 匹配任何數字以外的字符,等效於[^0-9]
 
分組和捕獲
(expr) 分組並捕獲
(?:expr) 分組但不捕獲
expr1|expr2 匹配expr1或者expr2
 
非匹配操作符(常用於在正則表達式內添加注釋)
(?# blabla) blabla是注釋內容
 
占位符
^ 字符串起始
$ 字符串結尾
\< 單詞起始
\> 單詞結尾
 
環視
(?=expr) 從當前位置向前看(字符串向右的方向),測試是否匹配expr
(?!expr) 從當前位置向前看(字符串向右的方向),測試是否不匹配expr
(?<=expr) 從當前位置向后看(字符串向左的方向),測試是否匹配expr
(?<!expr) 從當前位置向后看(字符串向左的方向),測試是否不匹配expr
 
定義數量
expr{m,n} 至少m次,最多n次
expr{m,} 至少m次,沒有上限
expr{n} 正好n次
expr? 出現0次或1次
expr* 出現任意次(可以是0次)
expr+ 出現1次或更多次
 
捕獲
(expr) 捕獲匹配得到的字符串
\N 匹配第N次捕獲的字符串
$N 引用第N次捕獲的字符串
(?(N)s1|s2) 如果存在第N次捕獲的字符串,則匹配s1,否則匹配s2
 
給捕獲命名
(?<name>expr) 給捕獲的字符串起名字叫name
\k<name> 匹配名叫name的被捕獲的字符串
$<name> 引用名叫name的被捕獲字符串
(?(name) s1 | s2) 我想您應該知道是什么意思


免責聲明!

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



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