正則運算式語法
/匹配主體/[修飾符]
常見修飾符有以下幾種
g:全域匹配,一般正則運算式遇到了第一個匹配的就會結束,例如/aaa/,這里匹配到第一個a就結束停止匹配,而加了g修飾之后會一直匹配到字串末尾
i:正則運算式默認區分大小寫,加了i修飾時則忽略大小寫,此時A和a一樣
m:可以使 ^ 和 $ 匹配一段文本中每行的開始和結束位置,即不把多行看成同一個字串,對于每個單獨的一行作為匹配物件
s:正常情況下 . 符表示匹配除\n以外的所有字符,加上s修飾后則包含了\n
對于不同的修飾符可以疊加使用例如/abc/gi
常見轉義字符

字符集合[]
[abc]表示匹配a,b,c中的任何一個即可,即和該集合交集不為空
[0-9]=[0123456789]
[^abc]表示對于a,b,c都不匹配,即和該集合無交集
- . 匹配除了換行符(\n)以外的任意一個字符 = [^\n]
- \w = [0-9a-Z_]
- \W = [^0-9a-Z_]
- \s = [ \t\n\v]
- \S = [^ \t\n\v]
- \d = [0-9]
- \D = [^0-9]
量詞
量詞一般跟在某個字符后面,表示對于該個字符進行多次匹配
{n} 匹配n次,例如A{2}=AA
{m,n} 匹配m到n次=[m,n],優先匹配n次,即可以匹配m,m+1....,n
{m,} 匹配大于等于m次,優先匹配出現的最大的次數
?={0,1} 匹配0或1次
+={1,} 匹配大于等于1次
* ={0,} 匹配大于等于0次
正則運算式匹配一般位貪婪模式優先匹配多的次數,在{}后面加?開啟非貪婪模式
a{1,3}?優先匹配a
字符邊界
^ ,開頭匹配符,放在模板串開頭,表示匹配以模板串為開頭的字串,例如^abc匹配以abc為開頭的字串
$ ,結尾匹配符,放在模板串結尾,表示匹配以模板串為結尾的字串,abc$
\b單詞邊界,放在模板穿末尾,表示匹配邊界為模板從字串,即開頭和結尾都要匹配的字串,abc\b=^abc$,可以匹配abchhabc,但是不能匹配abchh和hhabc
選擇運算式
通過分組來匹配多個字串,用 | 將字串分割開,前面字符集是匹配多個字符
abc|ig|op 表示匹配abc或ig或op
分組
(字串),表示為一組,我們之前對于單個字串的操作葉使用于字符組,[]除外
例如
(ab){3}表示ababab
(ab|cd){2}表示abcd,abab,cdcd,cdab
分組默認為捕獲組
普通捕獲組(pattren),命名捕獲組(?<name>pattern)或(?'name'pattern),非捕獲組: ?: 、?= 或 ?! 重寫捕獲組,一般以?開頭的普通捕獲組為非捕獲組
相比于捕獲組,非捕獲組不捕獲文本,無分組編號,不可被反向參考
參考語法為\數字,表示參考前面第幾個分組,后面匹配將和前面保持一致
預搜索
正宣告 “(?=…)”:是指匹配項后面字符匹配了指定字符后才會匹配
負宣告 “(?!...)” :是匹配項后面字符不匹配指定字符才會匹配
(?=a)b 只能匹配ab
(?!a)b 只能匹配bb
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/549242.html
標籤:其他
下一篇:pytorch簡介
