2013-02-19 17 views
17

Ben (bir dosyadan) bir dizesi vardır:php preg_match açgözlü değil?

ILX (New for 2013!) 

Overview: The least expensive route to Honda's premium-label goodness 

Drivetrain: Two four-cylinder engines to choose from as well as a gas-electric hybrid; front-wheel-drive only. 

Ben dize olsun nasıl.

$writeup = file_get_contents($car_files_path . $manufacture . '/Stories/'.$story); 

Ben genel çizgisini (Overview: The least expensive route to Honda's premium-label goodness) eşleştirmek istediğiniz Bunu başarmak için en iyi yolu nedir .

Ben n * \. çalıştı, ancak her şeyin maç olacak ve sonra yeni bir hat. regex olmayan açgözlü yapmak için bir yolu var mı?

ben ha denedim: preg_match('/^Overview:\s.*$/im', $writeup, $overall_matches) ve herhangi bir eşleşme alamıyorum.

+3

Açgözlü olmayan, '. *?' Http://www.regular-expressions.info/repeat.html –

+0

Eşleştirmeye çalıştığınız şey hakkında biraz kafam karışmış .. sadece tüm satırın "Genel Bakış" kelimesi, yeni satır? Gerçek ifadeniz nedir? –

+0

Genel hatlarıyla tüm satırı eşleştirmeye çalışıyorum: –

cevap

30

Ölçütleyiciden sonra ungreedy yapmak için ? ekleyin. Bu durumda, regex'iniz .*?\n olur.

özellikle ile başlayan hattını eşleştirmek için "Genel Bakış:" kullanımı bu regex:

/^Overview:\s.*$/im 

m değiştirici ^ ve $ tamamı yerine arama string dizisiyle başlangıcını ve sonunu eşleşmesini sağlar. ., s değiştiricisini kullanmıyorsanız, yeni satırlarla eşleşmediğinden, ungreedy yapmaya gerek olmadığını unutmayın.

+0

Dizenin bir kısmını eklemeyi unuttum. Güncelleme –

+0

'a bakınız. Hala iyi çalışmalı. –

+0

Hala eşleşme yapmıyorum. –