我有一个场景,我有多个具有相似标题的项目,需要简化标题,以便它们各自具有相同的标题。
以下是可能的变化:
Quarter Final Football vs. Loyola #2 -- 46:00
Quarter Final Football vs. Loyola #1 -- 32:00
Little Shop Act II -- 39:30 -- 5/22/91
Little Shop Act I -- 56:15 -- 5/22/91
B-BALL -- 3/14/86 -- vs. King -- First Half -- 43:15
B-BALL -- 3/14/86 -- vs. King -- Second Half -- 48:15
Oak Park 9/26/70 Part 1
Oak Park 9/26/70 Part 2
vs. Yale (1958) First Period
vs. Yale (1958) Second Period
匹配的结果最好是#34; vs。耶鲁(1958)"对于底部两个。 我尝试使用这个正则表达式模式的底部字符串,但我觉得有点失去了如何以编程方式处理所有这些变化。
([.,a-zA-Z0-9\s\(\)]*)\b([#]|Period|period)\b
感谢您的任何指导或帮助。
编辑: 每种变体的输出 -
Quarter Final Football vs. Loyola
Quarter Final Football vs. Loyola
Little Shop
Little Shop
B-BALL -- 3/14/86 -- vs. King
B-BALL -- 3/14/86 -- vs. King
Oak Park 9/26/70
Oak Park 9/26/70
vs. Yale (1958)
vs. Yale (1958)
答案 0 :(得分:3)
似乎没有共同点。如果是这种情况,您需要一个清单。
我认为你需要考虑可能是各种短语的起点,这些短语会被认为是多余的。以下正则表达式适用于您的示例;但它是否可以推广到你的真实数据还有待观察。我用了交替。如果可以有两个以上,您可能需要在列表中添加Third,Fourth等。
\s*(?:#|act|(?:--)?\s*(?:First|Second)|Part).*
使用过类似的东西:
$result = preg_replace('/\s*(?:#|act|(?:--)?\s*(?:First|Second)|Part).*/i', '', $subject);
请注意,我使用了不区分大小写的模式;并且您还希望点与不匹配换行符。