mongodb 字串查詢匹配中 regex的用法

2021-09-08 05:28:02 字數 992 閱讀 4156

舉個例子來說:現在有以下集合(官網的例子):

db.collection.find( );等效於下面這種寫法

db.collection.find( } );

以上是個簡單的應用。

引數介紹:

option ***** description

引數 i *****= 加了這個引數,表示不區分大小寫

引數 m ***** 個人理解這個引數是用來匹配value中有換行符(\n)的情形。

還有乙個情形是:匹配規則中使用了錨,所謂的錨就是^ 開頭, $ 結束

比如:db.products.find( } )

上面匹配規則的意思就是匹配description欄位的value值中,以大寫s開頭的value值。

匹配後結果是:

可以看出,第二條記錄中descriptio的值包含\n換行字元,而他之所以能匹配出來就是因為

新增了m 引數。

假設沒有新增m引數,語句就是

db.products.find( }

此時匹配結果為

再比如我們連錨都不寫也就是去掉^符合,語句變成

db.products.find( } )

此時結果為:

此時可以分析出m引數的使用場景:

應該是為了匹配欄位value值中以某個字元開頭(^),或者是某個字元結束($).即便value中包含換行符(\n)也能匹配到。

從上例最後例子看出,m引數應該是和錨同時使用才有意思,否則直接去匹配也能匹配出來。說明m是在特殊需求下才使用的!

引數 s ***** 允許點字元(.)匹配所有的字元,包括換行符。

比如語句:

db.products.find( } )

匹配value中包含m且之後為任意字元包括換行符並且還包含line字元的字串。不區分大小寫

結果為:

如果不加s引數時,語句為:

db.products.find( } )

結果為:

字串匹配查詢之KMP

在c c 語言程式設計過程中,一般的字串搜尋操作都是通過標準庫的strstr 函式來完成的,這在通常的情況下,因為字串的搜尋操作不多,並不會產生效率問題。實際上,這個函式的時間複雜度不容樂觀。如果要從長度為n的字串中查詢長度為m的子字串,那麼這個strstr 函式的最壞時間複雜度為o n m 可見,...

字串匹配

題目描述 讀入資料string 然後讀入乙個短字串。要求查詢string 中和短字串的所有匹配,輸出行號 匹配字串。匹配時不區分大小寫,並且可以有乙個用中括號表示的模式匹配。如 aa 123 bb 就是說aa1bb aa2bb aa3bb都算匹配。輸入 輸入有多組資料。每組資料第一行輸入n 1 n ...

字串匹配

time limit 1000ms memory limit 65536k 給定兩個字串string1和string2,判斷string2是否為string1的子串。輸入包含多組資料,每組測試資料報含兩行,第一行代表string1,第二行代表string2,string1和string2中保證不出現...