[英]Java regex replace the group value in original string
我有一個特定的要求來找到一個模式,並通過保留該模式(定界符)來替換原始字符串中匹配組(2)的值,我正在使用該模式
:(\w+)[:\|]+(.*)
使用此模式,它可以正確解析值,但是我無法替換group(2)的值。 例如我有多行輸入字符串
:20:9405601140
:2D::11298666
:28C:20/1
我想將標簽20的值(9405601140)替換為新值(1234),所以我期望的輸出是
:20:1234
:2D::11298666
:28C:20/1
謝謝
使用這個:
input = input.replaceAll("(:20):(\\d+)(?!\\d)", "$1:1234");
這里(\\\\d+)(?!\\\\d)
檢查after the :20:
之后的數字是否不跟數字。
但是,如果您只想替換:20:9405601140
那么這里非常簡單:
input = input.replaceAll(":20:9405601140(?!\\d)", ":20:1234");
為此,您可以捕獲要保留的內容而不是要替換的內容,然后在替換字符串中使用向后引用(第一個捕獲組為$1
),以將其包括在最終結果中。
就像是:
string.replaceAll("(:\\w+[:\\|]+).*", "$11234")
要在所有給定的行上執行替換,或者僅執行:
string.replaceAll("(:20[:\\|]+).*", "$11234")
僅在以“:20”開頭的行上執行替換。
嘗試這個
s = s.replaceAll("\\A(?::[:\\|])\\w+", "1234");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.