gpt4 book ai didi

java - 正则表达式向后匹配最近的字符

转载 作者:行者123 更新时间:2023-12-02 01:55:10 24 4
gpt4 key购买 nike

我有这个字符串:

P.1           P.2                    P.3                   P.4  
ASTON VETERINARY HOSPITAL
Page 1/2
00 PennelJ Road
Media, PA 19063-5983
(610) 474-5670
Client :

我想获取 ClientP.\d 之间的文本。这是演示:Regex

(P.\d)[\s\S]*(?=^.+Client :?)

问题在于它与第一页 P.1 相匹配。我需要在 Client 之前最近的 P.\d

如何更改正则表达式,使其与 P.4 匹配。

最佳答案

我用非贪婪运算符尝试过这个,但这行不通。我会尝试不再让整个正则表达式完全匹配您想要的内容,而是使用组。然后你可以编写一个匹配器来匹配任意数量的 P.1构造,它使您扫描 Client最后的字符串要简单得多,因为您不必尝试将其作为前瞻。因此:

String x = "P.1  P.2    P.3   P.4 foobar  Client :";
Pattern p = Pattern.compile("((P\\.\\d)(.*(P\\.\\d))*)+(?<result>.*)Client");
Matcher m = p.matcher(x);
System.out.println(m.find());
System.out.println(m.group("result"));

似乎正好能生产出您想要的东西。语法(?<whatever>REGEX HERE)正则表达式的意思是:让我稍后通过询问组“whatever”来捕获这一点。

关于java - 正则表达式向后匹配最近的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52407265/

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