Đó là vì \b
chỉ khớp nếu có một ký tự từ ở hai bên của nó. Trong trường hợp của bạn, \b
được bao quanh bởi một ký tự khoảng trắng và một dấu ngoặc đơn mở / đóng, cả hai đều không phải là ký tự "từ". Do đó, \b
kết hợp không thành công.
Bạn có thể làm
\\b0aef4666-3627-4c24-8e50-b0cf9a723823\\b
sẽ khớp với \b
bởi vì bây giờ nó đang ở trên một ranh giới từ.
Ngoài ra, bạn có thể so khớp với khoảng trắng HOẶC đầu / cuối dòng:
db.test.find({"text": /(^|\s)\(0aef4666-3627-4c24-8e50-b0cf9a723823\)($|\s)/i} )