正则表达式除“ M”,“ F”,“ M / F”外的所有内容

Mar*_*rio 5 regex

如果整个String不是“ M”,“ F”或“ M / F”,则我需要一个正则表达式在Java中使用以“ UNKNOWN”替换String。换一种说法:

  • 字符串“ M”保持为“ M”
  • 字符串“ F”保持为“ F”
  • 字符串“ M / F”保持为“ M / F”
  • 其他都变成“未知”

一种奇怪的情况是“ M /”或“ F /”,应变为“未知”。请帮助,我在这里死了。

我实际上是通过xml映射文件将正则表达式传递到框架中,因此我无法以编程方式控制输出的形成方式。我只能传递一个正则表达式,然后用正则表达式代替。

anu*_*ava 4

您可以像这样使用负前瞻:

Pattern.compile("^(?!^(?:M|F|M/F)$).*$");
Run Code Online (Sandbox Code Playgroud)

使用 String#replaceAll 你可以这样做:

String replaced = str.replaceAll("^(?!^(?:M|F|M/F)$).*$", "UNKNOWN");
Run Code Online (Sandbox Code Playgroud)