gpt4 book ai didi

java - 正则表达式忽略前导字符

转载 作者:行者123 更新时间:2023-12-03 02:51:25 26 4
gpt4 key购买 nike

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

FooABC
Foo XYZ123
FooFgh

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

ABC
XYZ123
Fgh

到目前为止我想出的最好的办法是:

[^Foo\s?].*$

我认为这是有效的,直到我注意到它正在从 Fgh 中删除大写 F。有什么方法可以让它完全忽略前三个字符和一个或多个空白字符,然后只捕获其他所有字符?

编辑/澄清

我应该说我不能使用子字符串/替换或在这种情况下我通常会做的任何事情,因为这个正则表达式将被输入到当前无法更新的已部署代码中。代码的作用是这样的:

Pattern pattern = Pattern.compile( regex );
Matcher matcher = pattern.matcher( data );
matcher.find();
String extracted = matcher.group();

然后使用提取的字符串作为查找的键。因此它必须一次性提取 key 。

最佳答案

替换

^Foo\s*

带有空字符串。如果您需要 3 个任意字符,请使用 .{3}​​ 而不是 Foo

<小时/>

如果需要使用匹配而不是替换,则需要使用捕获组:

^Foo\s*(.*)$
<小时/>

[^Foo\s?] 是一个字符类 ([...]),用于匹配除 (^) Fo、空格 (\s) 或问号 ?。这就是为什么 Fgh 中的 F 也匹配的原因。如果您想要分组括号,请使用 (?:...)

关于java - 正则表达式忽略前导字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5716584/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com