2012-01-28 31 views
6

Tại công ty của tôi, gần đây chúng tôi nhận thấy rằng một nhà phát triển không sử dụng các tệp ngôn ngữ nhưng đặt văn bản trực tiếp vào mã.Tìm chuỗi ký tự trong mã của tôi

Ý tưởng của tôi là tìm kiếm các từ giữa các dấu ngoặc kép có ít nhất 1 hoặc nhiều khoảng trống trong chúng. Nhưng tôi bị mắc kẹt với

("|')(\w|\s{1,})*('|") 

điều này khớp với văn bản nhưng không yêu cầu văn bản có ít nhất 1 từ và ít nhất khoảng trắng (vì vậy nó khớp với bất kỳ thứ gì giữa dấu ngoặc kép). Ai có thể giúp tôi không?

Ngôn ngữ tôi muốn sử dụng cho điều này là PHP (hoặc tôi có thể làm một notepad ++ tìm kiếm)

+0

ngôn ngữ lập trình gì? –

+0

Đã thêm ngôn ngữ vào câu hỏi – Rob

+0

Có gì bên trong dấu ngoặc kép quan tâm? Bất cứ điều gì ngoài lời nói và không gian? Họ trông giống như "foo bar baz"? Thoát có được phép không? Ngôn ngữ là mã mà nhà phát triển được đề cập đang sử dụng (mã bạn đang tìm kiếm)? – Qtax

Trả lời

2

Nếu bạn muốn kết hợp đơn hoặc đôi chuỗi trích dẫn (không thoát) có chứa một "từ" và một không gian bạn có thể sử dụng:

"(?=[^"\n]*\w)(?=[^"\n]*\s)[^"\n]+"|'(?=[^'\n]*\w)(?=[^'\n]*\s)[^'\n]+' 

Trong PHP nó sẽ trông giống như:

preg_match_all("/\"(?=[^\"\n]*\\w)(?=[^\"\n]*\\s)[^\"\n]+\"|'(?=[^'\n]*\\w)(?=[^'\n]*\\s)[^'\n]+'/", $string, $matches); 
+0

Cảm ơn, hoạt động như một sự quyến rũ! Để xấu tôi không thể đọc tất cả nhưng vẫn cần phải dành thời gian để học regex sớm thôi. Chỉ có vấn đề bây giờ là nó cũng lấy tất cả các từ giữa các chữ. Có thể tìm kiếm EOL sửa lỗi này không? – Rob

+0

+1, hy vọng các chuỗi không thể chứa thoát. Nếu họ có thể, một regex sẽ trở nên khá lộn xộn. Tôi đã rút lại giải pháp của mình bởi vì tôi đã tìm thấy nhiều trường hợp cạnh hơn và nhiều hơn nữa nếu nó thất bại ... –

+0

@Rob, "nó cũng lấy tất cả các từ giữa các chữ", ý bạn là gì? Bạn có thể cho một số ví dụ? Bạn cũng có thể muốn thay đổi tất cả các '[^"] 'và' [^ '] 'thành' [^ "\ n]' và '[^' \ n]' nếu các chuỗi không kéo dài nhiều dòng. @Tim, cảm ơn. Và bạn nói đúng, nếu có lối thoát, có lẽ tốt hơn bạn nên viết nó theo cách khác, giống như bạn hơn. – Qtax

Các vấn đề liên quan