簡體   English   中英

Java正則表達式替換原始字符串中的組值

[英]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");

反過來怎么做。

創建這樣的模式(:(\\w+)[:\\|]+)(.*)然后為每行輸出第一個組和您的替換組(而不是第2組)。

這是一個工作示例http://ideone.com/9TkGx6

為此,您可以捕獲要保留的內容而不是要替換的內容,然后在替換字符串中使用向后引用(第一個捕獲組為$1 ),以將其包括在最終結果中。

就像是:

string.replaceAll("(:\\w+[:\\|]+).*", "$11234")

要在所有給定的行上執行替換,或者僅執行:

string.replaceAll("(:20[:\\|]+).*", "$11234")

僅在以“:20”開頭的行上執行替換。

嘗試這個

s = s.replaceAll("\\A(?::[:\\|])\\w+", "1234");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM