使用Scanner查詢一些特殊字串的正規表示式

2021-08-17 03:45:30 字數 946 閱讀 4694

利用scanner的findinline可以在當前行中查詢符合正規表示式的子字串。使用findinline可以一定程度上代替c語言的sscanf。findinline可以自動跳過無用的字串,這與sscanf的特性相同。

如果當前行沒有合適的子字串,且源字串還有下一行,則需要呼叫nextline進入下一行重新查詢。

這裡列出一些目前常用的正規表示式:

查詢boolean字串:[tt][rr][uu][ee]|[ff][aa][ll][ss][ee]。它的特點是不區分大小寫,可識別"true"和"false";

查詢小數字串:[\+-]?\d+\.\d*|[\+-]?\d*\.\d+。它用於查詢帶有乙個小數點的數字。小數點左邊或右邊可以無數字。可識別"1.123"(小數點既不在最左,也不在最右)、".123"(小數點在最左)、"123."(小數點在最右);

查詢科學計數字串:[\+-]?\d+\.\d*[  ]*[ee][\+-]?\d+|[\+-]?\d*\.\d+[  ]*[ee][\+-]?\d+|[\+-]?\d+[  ]*[ee][\+-]?\d+。它用於查詢含'e'或'e'的小數;

查詢整數字串:[\+-]?\d+。用於連續的純數字;

查詢各種數字和浮點數:[\+-]?\d+\.\d*[  ]*[ee][\+-]?\d+|[\+-]?\d*\.\d+[  ]*[ee][\+-]?\d+|[\+-]?\d+[  ]*[ee][\+-]?\d+|[\+-]?\d+\.\d*|[\+-]?\d*\.\d+|[\+-]?\d+。即科學計數、小數、整數按先後順序併聯起來。

使用scanner時,需要考慮到程式效能。因為scanner的效能不佳,如果只是相查詢簡單的數字格式,可以看看我另一篇文章:

使用sscanf可以達到近百倍的速度,但是它的功能還不完整,無法讀取科學計數格式的數字,不支援c語言sscanf的很多高階特性。使用前請試驗一下,看看是否有你需要的功能,如果沒有你要的功能,再考慮使用scanner。

一些特殊字元使用

jdk的replaceall方法使用的是正則表達試,關於特殊字元轉義問題 replaceall 我 檔案路徑轉移 四個反斜槓等於 路徑統一符號切換 param path param separator return public static string returnpathcaseseparat...

關於Java中Scanner使用的一些問題

今天寫作業,實現乙個簡單的學生管理系統,在控制台簡單互動即可。我使用了scanner來接受輸入,我的寫法模擬如下 public static void main string args else 想法是輸入數字,根據輸入的數字選擇不同的選項,該選項是想輸出一句提示 請輸入學生的學號 然後按提示輸入學...

npm的一些特殊使用

package.json scripts指定了執行指令碼命令的npm命令列縮寫,比如start指定了執行npm run start時,所要執行的命令。bin項用來指定各個內部命令對應的可執行檔案的位置。簡要來說,bin是執行乙個可執行檔案,scripts是批量執行一些任務。bin npm會尋找這個檔...