[英]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.