php regex: Geriye bakan ve ileri yönlü ve hırs sorun

2 Cevap php

Bu basit olmalı ama bir çaylak ve ben bana yaşam için onu anlamaya olamaz. Ben özel açma / kapatma etiketleri içindeki metni eşleştirmek için regex kullanmaya çalışıyorum: [p2] [/ p2]

Bu metinde Yani:

apple [p2]banana[/p2] grape [p2]lemon[/p2]

o "muz" ve "limon" eşleşmesi gerekir. Bu noktaya kadar çalıştık regex olduğunu:

(?<=\[p2\]).+(?=\[\/p2\])

Ama bu çok açgözlü. Bu muz "b" ile başlayan ve limon "n" ile biten, eşleştirme banana[/p2] grape [p2]lemon eşleşir. Nasıl sadece muz ve limon maç?

2 Cevap

Bu yapmak gerekir:

(?<=\[p2\]).+?(?=\[\/p2\])

Ben nicelik olmayan açgözlü yapmak için soru işareti ekledi.

Bunun yerine bir regex değiştirici kullanarak, size standart perl tarzı maç değiştirici kullanmak ve bir ekleyebilirim? + veya * bu özel bölümü olmayan açgözlü olmak anlatmak sonra. Yukarıda belirtilen, ancak özgüllük yardımcı olabilir.