Để khớp chuỗi con giữa đầu tiên [
và cuối cùng ]
, bạn có thể sử dụng
\[.*\] # Including open/close brackets
\[(.*)\] # Excluding open/close brackets (using a capturing group)
(?<=\[).*(?=\]) # Excluding open/close brackets (using lookarounds)
Xem bản demo regex và bản demo regex # 2 .
Sử dụng các biểu thức sau để khớp chuỗi giữa các dấu ngoặc vuông gần nhất :
Bao gồm các dấu ngoặc:
\[[^][]*]
- PCRE, Python re
/ regex
, .NET, Golang, POSIX (grep, sed, bash)
\[[^\][]*]
- ECMAScript (JavaScript, C ++ std::regex
, VBA RegExp
)
\[[^\]\[]*]
- Java regex
\[[^\]\[]*\]
- Onigmo (Ruby, yêu cầu thoát dấu ngoặc ở mọi nơi)
Không bao gồm dấu ngoặc:
(?<=\[)[^][]*(?=])
- PCRE, Python re
/ regex
, .NET (C #, v.v.), ICU (R stringr
), Phần mềm JGSoft
\[([^][]*)]
- Bash , Golang - chụp nội dung giữa các dấu ngoặc vuông bằng một cặp dấu ngoặc đơn không thoát, cũng xem bên dưới
\[([^\][]*)]
- JavaScript , C ++std::regex
, VBARegExp
(?<=\[)[^\]\[]*(?=])
- Java regex
(?<=\[)[^\]\[]*(?=\])
- Onigmo (Ruby, yêu cầu thoát dấu ngoặc ở mọi nơi)
LƯU Ý : *
khớp 0 hoặc nhiều ký tự, sử dụng +
để khớp 1 hoặc nhiều hơn để tránh khớp chuỗi trống trong danh sách / mảng kết quả.
Bất cứ khi nào cả hai hỗ trợ tìm kiếm đều có sẵn, các giải pháp trên đều dựa vào chúng để loại trừ khung mở / đóng hàng đầu. Mặt khác, dựa vào các nhóm bắt (liên kết đến các giải pháp phổ biến nhất trong một số ngôn ngữ đã được cung cấp).
Nếu bạn cần khớp các dấu ngoặc đơn lồng nhau , bạn có thể thấy các giải pháp trong biểu thức Chính quy để khớp chuỗi ngoặc đơn cân bằng và thay thế dấu ngoặc tròn bằng dấu ngoặc vuông để có được chức năng cần thiết. Bạn nên sử dụng các nhóm chụp để truy cập nội dung với khung mở / đóng được loại trừ:
[^]]
nhanh hơn so với không tham lam (?
) và cũng hoạt động với các hương vị regex không hỗ trợ cho việc không tham lam. Tuy nhiên, không tham lam trông đẹp hơn.