正则表达式忽略前导字符

wob*_*ogs 2 java regex

我确信有一个简单的解决方案,但它让我陷入困境,所以希望有人可以帮助我.我有多行输入,如下所示:

FooABC
Foo XYZ123
FooFgh
Run Code Online (Sandbox Code Playgroud)

我需要一个正则表达式(在Java中),它将给我:

ABC
XYZ123
Fgh
Run Code Online (Sandbox Code Playgroud)

到目前为止我提出的最好的是:

[^Foo\s?].*$
Run Code Online (Sandbox Code Playgroud)

我认为这是有效的,直到我注意到它从Fgh移除了首都F. 有什么方法可以让它完全忽略前三个字符和一个或多个空格字符,然后捕获其他所有内容?

编辑/澄清

我应该说我不能使用字符串/替换或任何事情,我会在这种情况下,通常这样做,因为这个表达式将被送入部署的代码,目前还不能进行更新.代码的作用是:

Pattern pattern = Pattern.compile( regex );
Matcher matcher = pattern.matcher( data );
matcher.find();
String extracted = matcher.group();
Run Code Online (Sandbox Code Playgroud)

然后它将提取的字符串用作查找的关键字.所以它必须一次性提取密钥.

ken*_*ytm 6

更换

^Foo\s*
Run Code Online (Sandbox Code Playgroud)

用空字符串.使用.{3},如果你需要3个任意字符来代替Foo.


如果需要使用match而不是replace,则需要使用捕获组:

^Foo\s*(.*)$
Run Code Online (Sandbox Code Playgroud)

的[^Foo\s?]是一个字符类([...])到任何字符匹配除了(^)的F,一o,一个空格(\s)或问号?.这就是为什么Fin Fgh也匹配.如果需要分组括号,请使用(?:...).