2012-02-13 30 views
5

Tôi có điều này đang htaccess[^ /] + lời giải thích trong htaccess

RewriteRule ^/([uge])/([^/]+)$ /$1/$2/ 

Nhưng tôi thực sự không thể hiểu được những gì [^/]+ làm gì? Tôi đã tìm kiếm trên Google một thời gian, nhưng tôi không thể có được những gì tôi muốn.

Trả lời

7

Bạn có hai cấu trúc regex cơ bản tại đây

Lớp ký tự

See character classes on regular-expressions.info

[...] là một lớp nhân vật, phương tiện xây dựng này phù hợp với một ký tự từ lớp (từ bên trong dấu ngoặc vuông).

lớp học của bạn bắt đầu với một ^, cung cấp cho các lớp nhân vật một ý nghĩa đặc biệt, một lớp nhân vật phủ nhận của nó ([^...]), có nghĩa là bất cứ điều gì phù hợp với thats không một phần của lớp.

lượng hóa

See quantifiers on regular-expressions.info

+ là một lượng hóa, có nghĩa là 1 hoặc nhiều

Ý nghĩa của regex của bạn

Để hiểu điều này đang làm bạn cũng phải mất điều tiếp theo là tài khoản, số $ ở cuối. Đây là một neo khớp với phần cuối của chuỗi.

See anchors on regular-expressions.info

nên ([^/]+)$ trận đấu tất cả các ký tự ở cuối của chuỗi mà không phải là dấu gạch chéo.

Tại đây, bạn cũng có thể tìm thấy basic tutorial

+0

cảm ơn. Tôi nghĩ đây là giải thích tốt nhất cho người mới bắt đầu, như tôi. –

4

Điều đó có nghĩa:

Trận 1 hoặc nhiều ký tự cho đến khi dấu gạch chéo / được tìm thấy

Bất cứ điều gì trong dấu ngoặc vuông [] có caret ^ tại các hành vi bắt đầu có phủ định và do đó:

[^/] có nghĩa là bất kỳ ký tự nào xcept /

[^/]+ nghĩa 1 hoặc nhiều ký tự trừ /

+0

cảm ơn. 1 cho bạn. –

2

Khái niệm [^/] trận đấu bất kỳ ký tự đó không phải là /, và quantor + biểu thị rằng biểu thức bên trái của quantor phải xuất hiện ở leat một lần.

+0

cảm ơn .. 1 cho bạn quá :) –

5

[^/] có nghĩa là mọi ký tự không khớp với /.

+0

cảm ơn +1 cho bạn ... –

3

[any_character] là Lớp ký tự hoặc Bộ ký tự charclass Ref. [^any_character] là một Lớp nhân vật hoặc Bộ ký tự bị phủ nhận charclass negated Ref.

Từ Anchors Ref:

Ghi ^ cũng có ý nghĩa: Các caret^phù hợp với vị trí trước khi ký tự đầu tiên trong chuỗi (một Neo) khi không được sử dụng bên trong một lớp nhân vật.

Từ charclass Ref: Metacharacters Inside Character Classes:

Lưu ý rằng chỉ có ký tự đặc biệt hoặc metacharacters bên trong một lớp nhân vật là những khung bế mạc (]), dấu chéo ngược(), các dấu mũ (^) và dấu gạch ngang (-). Các siêu ký tự thông thường là các ký tự bình thường bên trong một lớp ký tự, và không cần phải được thoát bằng dấu gạch chéo ngược. Để tìm kiếm dấu sao hoặc dấu cộng, hãy sử dụng [+ *]. Regex của bạn sẽ làm việc tốt nếu bạn thoát khỏi metacharacters thường xuyên bên trong một lớp nhân vật, nhưng làm như vậy làm giảm đáng kể khả năng đọc.

Từ Repitition Ref
+ nghĩa một hoặc nhiều chracters.

vậy, [^/]+

phương tiện phù hợp với bất kỳ ký tự khác ngoài /.Vì vậy, nó sẽ phù hợp cho đến khi gặp phải /.


Đối ^/([uge])/([^/]+)$

  • chuỗi nên bắt đầu với /
  • Tiếp theo nhân vật u hoặc g hoặc e
  • Tiếp theo /
  • sau đó và kết thúc bằng một hoặc nhiều nhân vật nào khác ngoài /

các () (dấu ngoặc tròn) được sử dụng cho: Vòng Chân đế Tạo một backreference Ref

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