Dùng regex tìm từ được bắt đầu bởi một từ khác (2 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

Vô danh Tiểu tốt

Thành viên tiêu biểu
Tham gia
22/1/14
Bài viết
430
Được thích
547
Dùng regex ta có thể tìm được 1 từ theo sau bởi 1 từ cụ thể mà kết quả không bao gồm từ theo sau đó chẳng hạn tìm từ "yêu" không có từ "em" liền sau như code ví dụ:

Mã:
Sub teo()
    Dim regEx As New VBScript_RegExp_55.RegExp
    Dim matches, match, s, sentence
   [COLOR=#ff0000] regEx.Pattern = "yêu(?! em)"[/COLOR]
    regEx.IgnoreCase = True 'True to ignore case
    regEx.Global = True 'True matches all occurances, False matches the first occurance
    s = ""
    sentence = "Anh yêu em sao em không yêu anh. Sao em yêu anh ta?"
    If regEx.Test(sentence) Then
        Set matches = regEx.Execute(sentence)
        For Each match In matches
            s = s & " Position: " & match.FirstIndex
            s = s & " Word: " & match.Value & " "
            s = s & Chr(10)
        Next
    End If
    Debug.Print s
End Sub
Kết quả
PHP:
Position: 24 Word: yêu  
Position: 40 Word: yêu
value="yêu"
Liệu có cách nào để tìm một từ có một từ cụ thể đứng trước nó nhưng kết quả tìm không bao gồm từ đứng trước đó không? Ví dụ
"Tôi tìm em mà sao em đi mất rồi". Tìm từ "em" bắt đầu với từ "sao", kết quả ở vị trí 18 (value="em" chứ không phải value="sao em"). Regex có thể tìm được cụm từ "sao em" nhưng tôi lại chỉ cần tìm từ "em" đứng sau từ "sao". Ý tưởng của tôi là chỉ cần dùng 1 pattern để tìm ra các giá trị thỏa mãn trong câu mà không cần bước phụ loại bỏ dữ liệu thừa.

Nhân tiện cho hỏi ngu sao dán vô cái
PHP:
 code lại không xuống dòng được nhỉ?
 
Lần chỉnh sửa cuối:
Web KT

Bài viết mới nhất

Back
Top Bottom