從聽說正則運算式這個詞開始,我就沒學會過怎麼寫正則運算式,也是有認真學過的,但是由於不經常用,學一次忘一次。前段時間遇到VerbalExpressions這個神器,以後再也不用用google搜正則運算式了。PS:它支援多種語言,例如C#、Python、Swift、Java等等。
如果你使用maven管理專案,則在pom檔案中新增如下依賴:
ru.lanwen.verbalregex
我自己試了下,假如要匹配“以a開頭,以b結尾”的字串,可以用如下程式碼:
package com.javadu;
import ru.lanwen.verbalregex.VerbalExpression;
public class regexTool {
public static void main(String[] args) {
VerbalExpression testRegex = VerbalExpression.regex().
startOfLine().then("a").
anything().
endOfLine().then("b").
build();
System.out.println(testRegex.toString());
String str = "a123dddb";
System.out.println(testRegex.test(str));
}
}
執行結果如下:
^(?:a)(?:.*)(?:b)$
true
Process finished with exit code 0
推薦一個我最近在學的JVM課程,來自Oracle高階研究員鄭宇迪在極客時間的JVM專欄,目前更新了12篇文章,我基本都跟下來了,質量值得信賴。
整個專欄將分為四大模組。
-
基本原理:剖析 Java 虛擬機器的執行機制,逐一介紹 Java 虛擬機器的設計決策以及工程實現;
-
高效實現:探索 Java 編譯器,以及內嵌於 Java 虛擬機器中的即時編譯器,幫助你更好地理解 Java 語言特性,繼而寫出簡潔高效的程式碼;
-
程式碼最佳化:介紹如何利用工具定位並解決程式碼中的問題,以及在已有工具不適用的情況下,如何打造專屬輪子;
-
虛擬機器黑科技:介紹甲骨文實驗室近年來的前沿工作之一 GraalVM。包括如何在 JVM 上高效執行其他語言;如何混搭這些語言,實現 Polyglot;如何將這些語言事前編譯(Ahead-Of-Time,AOT)成機器指令,單獨執行甚至嵌入至資料庫中執行。