Day02
正則表達式
匹配:匹配個數要一樣字母大小敏感 數字看整體的數值
注意 \\ 在java 中只代表一個 \ 特殊字符需要轉義
## 正則表達式
### 什麼是正則
1. 正則本身是一個字符串
2. 正則用於檢索目標字符串中的規則
3. 正則是規定字符規則的字符串。
4. 正則需要解析器執行,Java提供了相關的解析處理API
5. 常見的編程語言大部分支持提供了正則API
1普通字符得匹配
包括字母數字漢字下劃線以及沒有特殊定義的標點符號 (所有的都要匹配完才結束) /(普通字符)
2簡單的轉義字符
\r 代表回車 \\t代表 (\ 加t) java中單獨寫 \ 會報錯
\t 代表值表符
\n 換行符
\\代表 \本身
\ 轉義字符 (特殊用處得標點符號需要轉義) \^ \$ \.
3預定的匹配符號
. 規則:任意一個字符(除換行符外\n \r)
\d : 0-9 任意的數字的任意一個
\D: 非數字 符的任意一個
\w : 任意的數字字母下劃線的任意一個
\W : 非任意的 數字字母下劃線
\s 包括空格製表符換行符等空白字符的任意一個 單一的空格只能匹配空格 單一的/t 只能單一匹配
\S 除了單個字符外的所有字符
4 自定義的匹配
[abc] 匹配:abc字符之一
[^abc]匹配:除了abc字符之一
[a-z]匹配:a、b、c ... z 字符之一
[a-zA-Z0-9]匹配:a-z , A-Z 和 0-9 字符之一
[a-z&& [^de]] 匹配:a-z 中除去 d e
^ 取非 - 從...到…
5 匹配次數的特殊符號(向左看)修飾前面的
{n} n次
{m,n} m 到n 次
{m,} 至少 m 到任意次
? 0 或 1 次
* 0 或多次
+ 1 或多次
6 特殊字符的匹配需要轉義
[ ] { } ? * + . \ ( ) | ^ $ 的字符
/來轉義寫成//
7匹配邊界
^ 放在中括號表示取反 外面表示開頭
8 關於邊界匹配 ^ $
1. 一般情況下對於字符串整體進行檢驗時候使用 ^ 和 $
-如:檢查用戶輸入的電話號碼的整體符合電話號碼規則
>matches 本身是包含邊界匹配
2. 如果只是匹配字符串中的部分信息,就不要使用 ^ 和 $
- 如:檢索目標字符串中的敏感詞,並且替換
9 分組()
取反(?:)
將一組序列整體進行處理
案例:
匹配規則: abcabcabcabcabcabc, abc連續出現6次
利用分組: (abc){6}
10 | 表示或的意思
通常和()以一起用
object 類根基類
toString() 所有子類應該重寫 toString( ),toString()一般返回一些重要的屬性 由系統自動調用
matches
簡單檢查字符串整體是否符合指定的規則, 返回boolean類型的結果,true表示檢查成功。
booleanb = 字符串.matches(正則規則);
> 這個方法默認包含重頭到尾的邊界匹配,所以是否使用邊界匹配結果是一樣的。
replaceAll
語法:去除一句話的敏感詞
字符串.replaceAll(正則, 替換字符串)
text.replaceAll("我[去草]", "**");
### Split
數據: ]
str= "1, 範傳奇, [email protected], 110"
需求:
將如上數據拆分開:
"1"
"範傳奇"
"110"
String[]ary=str.split(分界位置正則)
## Object
1. 如果類沒有聲明父類型,則其默認繼承於Object
2. 如果一個類有父類型,則其父類型或祖先類型一定繼承於Object
3. 任何類型一定繼承於 Object
4. 繼承了Object的全部可繼承方法
-toString 等
### toString 方法
1. 任何類型的對象都繼承了Object方法
2. 默認的返回值類全名@散列值默認的toString返回值,沒有業務意義!
3. Java 建議子類重寫掉 toString
* 如何重寫toString經常返回對象的關鍵屬性
* 信息,根據業務規則選定關鍵屬性,方便軟件
* 的調試。println() 會自動調用toString
* 很多Java API 會自動調用toString方法
1. 如果類沒有聲明父類型,則其默認繼承於Object
2. 如果一個類有父類型,則其父類型或祖先類型
一定繼承於Object
3. 任何類型一定繼承於 Object
4. 繼承了Object的全部可繼承方法
### equals 方法
Object提供了equals方法,用於比較對象是否相等,但其默認的方法不能達到這個目的,Java建議子類重寫equals方法解決兩個對象比較是否相等的問題。
> 可以利用開發工具提供的 equals 實現功能,快速的實現equals方法