如何只匹配一次?

时间:2017-12-09 01:21:01

标签: regex

我的正则表达式看起来像

  

•36个月每月389美元4,114美元签署建议经销商   捐款1,385美元优惠不适用于波多黎各。租赁融资   适用于2017款新款BMW 330i xDrive运动旅行车型号   通过宝马金融服务参与宝马中心   2018年1月2日,为符合条件的合格客户提供优质服务   符合宝马金融服务信贷要求的信用记录。   每月389美元的租赁费用为36个月每月38美元   调整后的资本化成本为38,210美元(建议零售价为45,595美元,包括   目的地和手续费为995美元,减去3000美元的客户,0美元   保证金和建议的经销商捐款1,385美元和   $ 3,000假期租赁信贷)。实际MSRP可能会有所不同。零售商   贡献可能会有所不同,可能会影响您的实际月租   付款。签署时的现金包括首付3,000美元,首付389美元   月付款,925美元购置费和0美元保证金。承租人   在租赁期内负责保险,过度磨损   根据租赁合同的规定,超过30,000英里的0.25美元/英里和一英里   租赁期间350美元的处置费。并非所有客户都符合资格   保证金豁免。税,所有权,许可和注册费   是签署时的额外费用。广告付款没有   包括适用的税收。租赁结束时的购买选择,不含税,   所有权和政府费用为27,813美元。优惠有效期至1月02日,   除非另有说明,2018年可与其他优惠同时使用。   图示的模型可能会显示金属漆和/或其他   配件。有关重要细节,请访问授权的BMW中心。   ©2017 BMW of North America,LLC。 BMW名称,型号名称和徽标   是注册商标。

我希望在月之前匹配数字,在这种情况下是

  

36

然而它出现了两次。有没有办法让它只匹配一次?

我正在使用\d+\s*(?=( months+?))

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

也许你可以在字符串开头之前找到前36个月,然后在一个组中捕获它:

^.*?(\d+)(?=\smonths)

  • 匹配字符串.*?
  • 的开头
  • 匹配任何字符0次或更多次非贪婪(\d+)
  • 捕获组(?=\smonths)
  • 中的1位或多位数字
  • 如果后面的内容是空格和月{{1}}
  • ,则为正向前瞻
相关问题