基本定義
菜鳥教程
https://www.runoob.com/regexp/regexp-syntax.html
測試
https://tool.oschina.net/regex/#
基礎
正則表達式的() [] {} 有着不同的意思。
() 是爲了提取匹配字符串的,表達式中有幾個()就有幾個相應的匹配字符串
(\s*)表示連續空格的字符串
[] 是定義匹配的字符範圍。比如[a-zA-Z0-9]表示相應位置的字符要匹配英文字符和數字。[\s*表示空格或者*號]
{}一般是用來匹配的長度。比如\s{3}表示匹配三個空格,\s[1,3]表示匹配1到3個空格
(0-9)匹配'0-9'本身。[0-9]*匹配數字(注意後面有*,可以爲空)[0-9]+匹配數字(注意後面有+,不可以爲空),
{0-9}寫法是錯誤的
[0-9]{0,9}表示長度爲0到9的數字字符串。
全匹配
- 例子:
sign-apply-developer, 申請簽約開發者, 0
- 表達式:
[a-z|-]+(,.*,).*[0-9]
- 説明:
[a-z|-]
匹配sign-apply-developer
字母a到z 或 ‘-’;- ‘+’匹配多個,即匹配個數>1
(,.*,)
貪婪模式 匹配‘,’中間部分,‘()’匹配本身.*
匹配後續所有[0-9]
匹配0到9數字 PS:等價於\d
匹配左側部分
- 表達式:
^[^,]+
- 例子:
sign-apply-developer, 申請簽約開發者, 0
- 說明:
-[^,]
找到’,'以外部分
-[^,]+
匹配到3處
-^[^,]+
左側第一個
匹配右側部分
- 表達式:
[,]\s+\d+
- 例子:
sign-apply-developer, 申請簽約開發者, 0
- 說明:
-[,]
找到兩個,
-\s\d
匹配右邊有一個空格和一個整形
-+
匹配數量>1 兼容多空格,多數字情況 如:, 0000000
- 優化:
[,]\s+\d.*
匹配中間部分 - 刪除
- 表達式:
,.*,
- 例子:
sign-apply-developer, 申請簽約開發者, 0
- 說明:替換兩個,中間部分爲空
sign-apply-developer 0
匹配兩側部分
- 表達式:
^[^,]+|[^,]+$
- 例子:
sign-apply-developer, 申請簽約開發者, 0
- 說明:
-[^,]
找到‘,’以外部分
-^[^,]
最左側 即’s’
-^([^,]+)
取反,即左側全部
-[^,]+$
取反,即右側全部