在特定平臺上執行測驗時,我需要替換對/devt/with 的參考/Volumes/devt/。所以我嘗試了:folder.replaceAll("(^|=)/devt/","\$1/Volumes/devt/")考慮到這一點,這看起來不錯
- 字串可以出現在命令的開始處,也可以出現在命令之后的任何地方
= - 我們有可能
/Volumes/devt/成為主題 - 在這種情況下我們不想做任何事情
這沒有做任何事情。沒有錯誤訊息,也沒有替換。所以我嘗試過,folder.replaceAll("^(?!/Volumes)/devt/","\$1/Volumes/devt/")但失敗了java.lang.IndexOutOfBoundsException: No group 1。
我用一個沒有抱怨的驗證器測驗了這些運算式。但是我對 Jenkins/Groovy/Java-universe 不夠精通,無法了解那里的特殊處理......
uj5u.com熱心網友回復:
該^(?!/Volumes)/devt/正則運算式是等于^/devt/作為/Volumes不能位于與同一位置/devt/。
您要替換的是/devt/字串的開頭或=符號之后,因此您需要使用的是
folder = folder.replaceAll("(?<![^=])/dev/", "/Volumes/devt/")
在(?<![^=])/dev/正則運算式匹配/dev/要么是在開始或前面帶有=。因此,無需在替換中使用反向參考。
不要忘記 Java 中的字串是不可變的,因此您總是需要將結果分配給變數以更新其值。
uj5u.com熱心網友回復:
謝謝@Wiktor Stribi?ew - 解決方案實際上更簡單:
我寫的地方folder.replaceAll("(^|=)/devt/","\$1/Volumes/devt/")
我應該分配結果!
folder = folder.replaceAll("(^|=)/devt/","\$1/Volumes/devt/") 修復。正則運算式本身不是問題!
PS:那個正則運算式沒有意義!
只是對 Wiktor 評論的評論:這是有道理的。從 MacOS 查看檔案夾結構時,該檔案夾/devt/的地址為/Volumes/devt/. 所以,當遇到呼叫/devt/myscript val1=/devt/file1 val2=/Volumes/devt/file2", val2` 時不需要修改。我最初的 rx(以及你的)負責處理;)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/341561.html
