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

时间:2018-09-19 13:39:13

标签: java regex

我有这个字符串:

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相匹配。我需要在客户之前最接近的P.\d

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

1 个答案:

答案 0 :(得分:2)

我尝试过使用非贪婪的运算符,但这是行不通的。我会尽量避免让 entire 正则表达式与您想要的完全匹配,而应使用组。然后,您可以编写匹配器以匹配任意数量的var str = "abc@xyz.com,xyz@xyz.com,,,pqr@xyz.com,,,,123@xyz.com,"; str = str.split(',').filter(a => a).join(','); console.log(str); 构造,这样就可以使对str = str.replace(/,+/g, ",").replace(/,(.*),/, '$1'); 字符串的扫描更加简单,因为您不必尝试这样做作为前瞻。因此:

P.1

似乎可以精确地产生您想要的东西。语法Client是正则表达式,用于:稍后让我询问“任何”组。