如果整个String不是“M”,“F”或“M / F”,我需要在
Java中使用正则表达式将字符串替换为“UNKNOWN”.换一种说法:
>字符串“M”保持“M”
>字符串“F”保持“F”
>字符串“M / F”保持“M / F”
>其他任何事情都变成了“未知”
一个奇怪的情况是“M /”或“F /”应该变为“未知”.请帮忙,我在这里死了.
我实际上是通过xml映射文件将正则表达式传递给框架,所以我没有编程控制输出的形成方式.我只能传递一个正则表达式,以及它被替换为什么.
解决方法
您可以像这样使用负向前瞻:
Pattern.compile("^(?!^(?:M|F|M/F)$).*$");
使用String#replaceAll你可以做到:
String replaced = str.replaceAll("^(?!^(?:M|F|M/F)$).*$","UNKNOWN");