2015-04-01 19 views
2

我有一個正則表達式,它尋找一個以選項組的ngram結尾的模式。下面是正則表達式:如何使PHP正則表達式選項組不渴望?

$regex = '/.{0,150}\b(is (.{0,50}?)\b(assembler|builder|consulter|contracter|contractor|contract manufacturer|converter|designer|distributer|distributor|engineerer|fabricater|fabricator|formulater|formulator|installer|machiner|manufacturer|offerer|producer|provider|reseller|seller|supplier|wholesaler|machine shop|job shop|law firm|marketer|marketing agency))\b([^.!?<>]{0,150})\b/' 

下面是我對匹配字符串:

$string = 'ABC Company Inc. is a Distributor, Fabricator, and Manufacturer of textiles. Another sentence.'; 

的目標是提取「是一家經銷商,加工商和製造商」與第一捕獲組正則表達式。正則表達式的其餘部分只是定義上下文,理想情況下,通常在句子的結尾或在一定的長度之後結束。

現在,我的第一個捕獲組很渴望並且只匹配「是分銷商」。我怎樣才能使這不渴望?

回答

1
.{0,150}\b(is (.{0,50}?)\b(assembler|builder|consulter|contracter|contractor|contract manufacturer|converter|designer|distributer|distributor|engineerer|fabricater|fabricator|formulater|formulator|installer|machiner|manufacturer|offerer|producer|provider|reseller|seller|supplier|wholesaler|machine shop|job shop|law firm|marketer|marketing agency)(.*?\b(assembler|builder|consulter|contracter|contractor|contract manufacturer|converter|designer|distributer|distributor|engineerer|fabricater|fabricator|formulater|formulator|installer|machiner|manufacturer|offerer|producer|provider|reseller|seller|supplier|wholesaler|machine shop|job shop|law firm|marketer|marketing agency))*)\b([^.!?<>]{0,150})\b 

這個超長的正則表達式可以做到這一點。

https://regex101.com/r/sJ9gM7/39

相關問題