我用Regex.fromLiteral(".*")
創建了一個非常簡單的match-all正則表達式。正則表達式與Regex.fromLiteral()匹配創建了什麼?
根據documentation:「返回指定文字字符串的文字正則表達式。」
但我真的不明白「爲指定的文字字符串」應該是什麼意思。
考慮這個例子:
fun main(args: Array<String>) {
val regex1 = ".*".toRegex()
val regex2 = Regex.fromLiteral(".*")
println("regex1 matches abc: " + regex1.matches("abc"))
println("regex2 matches abc: " + regex2.matches("abc"))
println("regex2 matches .* : " + regex2.matches(".*"))
}
輸出:
regex1 matches abc: true
regex2 matches abc: false
regex2 matches .* : true
如此明顯(而且違背了我的期望),Regex.fromLiteral()
和String.toRegex()
行爲完全不同的(我已經嘗試了幾十種不同的參數regex2.matches()
- 唯一返回true的是.*
)
Doe這意味着用Regex.fromLiteral()
創建的正則表達式總是僅匹配確切的字符串它是用?創建的?
如果是,那麼這樣的正則表達式有哪些可能的用例? (我想不出任何有用的場景)
「有時你需要一個Regex實例作爲參數」 - 真的,沒有想到這種情況。謝謝! –