2011-12-05 27 views
7

Tôi thấy rằng \d không được công nhận là [0-9]. Xem đầu ra bảng điều khiển của tôi bên dưới:Có thể triển khai libpcre của Lua không hỗ trợ ' d' không?

> require "rex_pcre" 
> return rex_pcre.new("[0-9]+"):exec("1234") 
1  4  table: 0x2141ce0 
> return rex_pcre.new("\d+"):exec("1234") 
nil 

Tôi có thiếu gì đó không?

CẬP NHẬT

Như Kevin Ballard đã trả lời một cách chính xác, chuỗi thoát công trình! ví dụ.

> return rex_pcre.new("\\d+"):exec("1234") 
1  4  table: 0x21427f0 
> return rex_pcre.new([[\d+]]):exec("1234") 
1  4  table: 0x2142ee0 

Cảm ơn Kevin

+0

Tôi đã làm, phải mất một thời gian tuy nhiên, nợ thực tế SO không cho phép chấp nhận một câu trả lời cho đến khi 10 hoặc 15 phút đã trôi qua kể từ khi câu hỏi được đăng. –

Trả lời

9

Tôi tưởng tượng đó là vì \d đang được hiểu như là một chuỗi thoát bởi Lua. Hãy thử sử dụng "\\d+" hoặc [[\d+]] để thay thế. Cú pháp là explained here.

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