[英]Regex to match the nearest character backwards
我有这个字符串:
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 :
我想在Client
和P.\\d
之间获取文本。 这是演示:正则表达式
(P.\d)[\s\S]*(?=^.+Client :?)
问题在于它与第一页P.1
相匹配。 我需要在客户之前最接近的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”来抓住这一点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.