30/09/2018, 18:22

Lọc lấy chuỗi nằm trong dấu nháy đơn nhưng không nằm trong dấu ngoặc nhọn

Em đang tạo một biểu thức chính quy để lọc tất cả các kí tự nằm trong cặp dấu nháy, nhưng không ở trong cặp dấu ngoặc nhọn.
vd:

{xin chao, day la xau 'daynhauhoc'} va day la xau 'bieuthucchinhquy' cua toi.

sau khi lọc sẽ cho ra:

bieuthucchinhquy

(mặc dù daynhauhoc cũng nằm trong cặp dấu nháy, nhưng nó lại ở trong cặp dấu ngoặc nhọn cho nên không hợp lệ.)
Mong các anh chị giúp đỡ em với ạ, em cám ơn nhiều…

Mai Anh Dũng viết 20:37 ngày 30/09/2018

Sao không tìm hết các chuỗi nằm trong {} rồi xóa hết đi, sau đó mới tìm chuỗi nằm trong ''

hacked viết 20:38 ngày 30/09/2018

Không anh ơi, chỉ lọc ra chứ không xóa và chuổi này có thể rất là dài…

Mai Anh Dũng viết 20:33 ngày 30/09/2018

chỉ lọc ra chứ không xóa

Lọc là lấy ra đúng không? Mục đích của mình là lấy ra, tạo một bản copy của cái chuỗi đó rồi xóa dần cái không cần để lấy cái mình cần.

chuổi này có thể rất là dài

Dài thì có liên quan gì?

hacked viết 20:30 ngày 30/09/2018

Vì rất dài cho nên sợ không đủ thời gian anh ạ!

Mai Anh Dũng viết 20:35 ngày 30/09/2018

Rất dài là cỡ nào? Vài GB text không? Regular expression phức tạp nó chạy cũng lâu nữa.

hacked viết 20:33 ngày 30/09/2018

Thế này anh ạ, mục đích chính của em khi lọc ra là để cho nó có màu khác thôi, giống như là Highlight Code ấy. Và nó phải tự động thay đổi khi nội dung thay đổi, nội dung này ở trên RichTextBox.

Mai Anh Dũng viết 20:33 ngày 30/09/2018

‘\w+’(?![^{]*})

'\w+'        # lấy chuỗi nằm trong dấu ''
    (?!      # Nếu không dính với phần tiếp theo [1]
     [^{]*}  # Không bắt đầu bằng { và không kết thúc bằng }
    )         # Kết thúc [1]

http://regexstorm.net/tester

Chạy được trên ví dụ đơn giản nhưng phức tạp thì có thể có lỗi đối với ví dụ phức tạp.

Nhớ là: nếu bạn có một vấn đề, bạn dùng regular expression, bạn có 2 vấn đề.

hacked viết 20:32 ngày 30/09/2018

Like anh Đạt, hay thật!!

Biểu thức này bị lỗi với:

xin chao, day la xau '{daynhauhoc'} va day la xau 'bieuthucchinhquy' cua toi.
Mai Anh Dũng viết 20:28 ngày 30/09/2018

Cái này còn tùy thuộc vào nhu cầu của tinh năng có muốn highlight luôn các ký tự đặc biệt đặt trong '' hay không, mà có nữa thì phức tạp à

\w+ chỉ lấy chữ, số và dấu gạch chân

Bài liên quan
0