To dlatego, że \b
pasuje tylko wtedy, gdy po obu jego stronach znajduje się znak słowa. W twoim przypadku \b
jest otoczony znakiem spacji i nawiasem otwierającym/zamykającym, z których żaden nie jest znakiem „słowa”. Dlatego \b
dopasowanie nie powiodło się.
Możesz zrobić
\\b0aef4666-3627-4c24-8e50-b0cf9a723823\\b
który będzie pasował do \b
ponieważ teraz znajduje się na granicy słów.
Alternatywnie możesz dopasować spację LUB początek/koniec wiersza:
db.test.find({"text": /(^|\s)\(0aef4666-3627-4c24-8e50-b0cf9a723823\)($|\s)/i} )