Biểu thức chính quy cho một chuỗi không bắt đầu bằng một chuỗi


196

Tôi đang xử lý một loạt các bảng bằng chương trình này , nhưng tôi cần bỏ qua các bảng bắt đầu bằng nhãn "tbd_". Cho đến nay tôi có một cái gì đó giống như [^ tbd_] nhưng đơn giản là nó không phù hợp với những nhân vật đó.


SchemaSpy hoạt động như thế nào? Bạn đang chuyển cho nó một danh sách các tên bảng hay bạn đang chuyển cho nó một biểu thức chính quy và nó đang thực hiện khớp?
Mark Biek

Tôi đang vượt qua một regex (đó là cờ -i) và nó sẽ nhập các trận đấu, hoặc vì vậy nó nói trong mọi trường hợp =)
echoblaze

4
@echoblaze: Nếu bạn đang xử lý XML, tại sao bạn không sử dụng trình phân tích cú pháp XML? Điều đó sẽ dễ dàng hơn nhiều so với việc sử dụng các biểu thức thông thường.
Gumbo

Câu trả lời:


332

Bạn có thể sử dụng một xác nhận tiêu cực về phía trước:

^(?!tbd_).+

Hoặc một cái nhìn tiêu cực phía sau khẳng định:

(^.{1,3}$|^.{4}(?<!tbd_).*)

Hoặc chỉ đơn giản là bộ ký tự cũ và xen kẽ:

^([^t]|t($|[^b]|b($|[^d]|d($|[^_])))).*

6
Điều này có bị hạn chế đối với bất kỳ công cụ regex cụ thể nào không?
Mark Biek

1
Tôi chỉ hỏi bởi vì cái thứ hai dường như vẫn khớp với tbd_ trong bài kiểm tra của tôi. Điều đầu tiên là tuyệt vời mặc dù.
Mark Biek

5
Hãy xem so sánh hương vị của normal-express.info
Gumbo

1
@Gumbo - không nên kết thúc. * Thay vì. +? Một chuỗi là tbd_ cũng bắt đầu bằng điều đó ... do đó theo định nghĩa không cần phải theo bất kỳ ký tự nào khác? Nếu không, ví dụ tốt. Nó không yêu cầu một công cụ regex hỗ trợ nhìn.
BenAlabaster

1
@balabaster: Tôi không nghĩ anh ấy đang tìm kiếm chuỗi trống. Nhưng nếu vậy, anh ta có thể dễ dàng thay đổi điều đó bằng cách thay thế .+bằng.*
Gumbo
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.