2013-02-19 40 views
17

Tôi có một chuỗi (từ một tập tin):php preg_match không tham lam?

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. 

Làm thế nào tôi có được chuỗi:.

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

Tôi muốn để phù hợp với dòng tổng quan (Overview: The least expensive route to Honda's premium-label goodness) cách tốt nhất để đạt được điều này là gì .

tôi đã cố gắng. * \ n, nhưng điều đó sẽ phù hợp với tất cả mọi thứ và sau đó một dòng mới. có cách nào để làm cho regex không tham lam?

tôi ha đã thử: preg_match('/^Overview:\s.*$/im', $writeup, $overall_matches) và tôi không nhận được bất kỳ kết quả phù hợp nào

+3

Không tham lam là '. *?' Http://www.regular-expressions.info/repeat.html –

+0

Tôi hơi bối rối về những gì bạn đang cố gắng khớp .. chỉ toàn bộ dòng với từ 'Tổng quan' trong đó, dòng mới? Regex thực tế của bạn là gì? –

+0

Tôi đang cố gắng khớp toàn bộ dòng với Tổng quan: –

Trả lời

30

Thêm ? sau khi định lượng để làm cho nó không phù hợp. Trong trường hợp này, regex của bạn sẽ là .*?\n.

Để đặc biệt phù hợp với dòng bắt đầu bằng "Tổng quan:", sử dụng regex này:

/^Overview:\s.*$/im 

Các modifier m phép ^$ để phù hợp với sự khởi đầu và kết thúc của dòng thay vì toàn bộ chuỗi tìm kiếm. Lưu ý rằng không cần phải làm cho nó không phù hợp vì . không khớp với dòng mới trừ khi bạn sử dụng công cụ sửa đổi s - trên thực tế, làm cho nó không phù hợp ở đây sẽ là xấu cho hiệu suất.

+0

Tôi quên bao gồm một phần của chuỗi. Vui lòng xem cập nhật –

+0

Nó vẫn hoạt động tốt. –

+0

Tôi vẫn chưa nhận được bất kỳ trận đấu nào. Xem cập nhật ở trên –