![](/img/trans.png)
[英]Regex pattern in Java to replace everything except certain sequence of tokens
[英]Java regex, replace certain characters except
我有這個字符串“u2x4m5x7”,我想用“”替換所有字符,但一個數字后跟一個x。 輸出應該是:“2x5x” 只是數字后跟 x。 但我得到了這個:“2x45x7”
我這樣做:
String string = "u2x4m5x7";
String s = string.replaceAll("[^0-9+x]","");
請幫忙!!!
這是一個使用String#replaceAll
和兩個替換的單行:
System.out.println(string.replaceAll("\\d+(?!x)", "").replaceAll("[^x\\d]", ""));
這是另一個有效的解決方案。 我們可以使用具有模式\\d+x
的正式模式匹配器來迭代輸入字符串。 這是白名單方法,嘗試匹配我們想要保留的變量組合。
String input = "u2x4m5x7";
Pattern pattern = Pattern.compile("\\d+x");
Matcher m = pattern.matcher(input);
StringBuilder b = new StringBuilder();
while(m.find()) {
b.append(m.group(0));
}
System.out.println(b)
這打印:
2x5x
看起來通過搜索獲得匹配而不是替換所有非匹配會更簡單,但這是一個可能的解決方案,盡管它可能會遺漏一些情況:
\d(?!x)|[^0-9x]|(?<!\d)x
https://regex101.com/r/v6udph/1
基本上它會:
\\d(?!x)
-- 刪除后面沒有x
任何數字[^0-9x]
-- 刪除所有非 x/數字字符(?<!\\d)x
-- 刪除所有x
前面沒有數字的但話又說回來,從\\dx
抓取會簡單得多
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.