例如,我有下面的单词列表要屏蔽。
India
Australia
North America
South America
White House building
我需要一个像下面这样的输出。
Ixxxa
Axxxxxxxa
Nxxxh Axxxxxa
Sxxxh Axxxxxa
Wxxxe Hxxxe bxxxxxxg
使用下面的表达式,我可以屏蔽最后一个字符,包括空格。
return input.replaceAll("[\\s()]+", " ").replaceAll("\\d(?=(?:\\D*\\d){4})","X");
3条答案
按热度按时间camsedfj1#
要匹配一个非空白字符,除了“外部”字符,你可以在左边和右边Assert一个非空白字符
\S
:在 java
参见regex demo和Java demo。
Java示例:
输出
kzmpq1sx2#
上面的建议张贴在下面的正则表达式帮助解决了这个问题。
(?〈=\S)\S(?=\S)
我用不同的组合测试了它的字符和数字。这解决了我的要求...谢谢。
6kkfgxo03#
我不确定正则表达式,如果你想用OOP的方式来做--但可能效率不高--你可以按行和词来分割,并以编程方式屏蔽它们:
你可以这样使用它:
或直接在日志中:
log.info("account: {}", new MaskedText(account))