我确信有一个简单的解决方案,但它让我陷入困境,所以希望有人可以帮助我.我有多行输入,如下所示:
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)
然后它将提取的字符串用作查找的关键字.所以它必须一次性提取密钥.
更换
^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也匹配.如果需要分组括号,请使用(?:...).
| 归档时间: |
|
| 查看次数: |
14257 次 |
| 最近记录: |