Tôi đang cố gắng sử dụng lookbehinds trong một biểu thức chính quy và nó dường như không hoạt động như tôi mong đợi. Vì vậy, đây không phải là cách sử dụng thực sự của tôi, nhưng để đơn giản hóa tôi sẽ đưa ra một ví dụ. Hãy tưởng tượng tôi muốn khớp "ví dụ" trên một chuỗi có nội dung "đây là một ví dụ". Vì vậy, theo sự hiểu biết của tôi về lookbehinds này nên làm việc:Regular Expression Lookbehind không hoạt động với các định lượng ('+' hoặc '*')
(?<=this\sis\san\s*?)example
Điều này nên làm là tìm thấy "đây là một", sau đó ký tự không gian và cuối cùng là phù hợp với từ "example". Bây giờ, nó không hoạt động và tôi không hiểu tại sao, là nó không thể sử dụng '+' hoặc '*' bên trong lookbehinds?
Tôi cũng đã cố gắng hai và họ làm việc một cách chính xác, nhưng không đáp ứng nhu cầu của tôi:
(?<=this\sis\san\s)example
this\sis\san\s*?example
Tôi đang sử dụng trang web này để kiểm tra biểu thức thông thường của tôi: http://gskinner.com/RegExr/
này cần một thẻ nhận dạng ngôn ngữ hoặc môi trường nơi bạn sử dụng chúng. Các biểu thức chính quy của .NET xử lý vấn đề này mà không có vấn đề gì. – Joey
Thông báo! Nếu regex của bạn sẽ hoạt động như bạn muốn nó cũng sẽ khớp với 'example' từ đây:' this is anexample'. Vì vậy, nếu bạn không muốn rằng bạn nên loại bỏ '?' – noob
micha: Chúng có lẽ chỉ cần thay đổi * thành một '+'. Việc loại bỏ '?' Không có hiệu lực trong vấn đề đó. Nhưng thực sự, '*? 'Như một định lượng là vô ích và không cần thiết trong trường hợp này vì không còn khoảng trắng nào khớp với nhau nữa, vì vậy' \ s *? 'Tương đương với' \ s * '. – Joey