2013-09-28 67 views
0

我試圖創建一個非常簡單的搜索查詢,它匹配任何搜索字詞,但對全部單詞,所以部分匹配不會出現問題,例如使用[[:<:]][[:>:]]時空間是否被視爲字邊界?

要查找的字符串是:

" (This is) my test string " 

和匹配的查詢可能是:

"This is" 
"(This is)" 
"(This is" 
"This is)" 
"my test" 
"string" 

等,但並不:

"This is my" 
"(thi" 
"my tes" 

等,這些都只是部分匹配。 LIKE是沒有用的,所以在這裏我與REGEXP和單詞邊界嘗試:

1. SELECT " (This is) my test string " REGEXP "(^|[[:<:]])this is([[:>:]]|$)"; -> 1 
2. SELECT " (This is) my test string " REGEXP "(^|[[:<:]])\\(this is\\)([[:>:]]|$)"; -> 0 
3. SELECT " This is my test string " REGEXP "(^|[[:<:]])this is([[:>:]]|$)"; -> 1 

現在的問題是,爲什麼不pt.2覆蓋空間的界限,而他們第3篇第似乎(圓括弧刪除thos顯示差異)?我在這裏錯過了什麼?

感謝

回答

0

由於Regular Expressions下記載:

這些標記表示word邊界。它們分別匹配單詞的開頭和結尾。單詞是單詞字符之前或之後沒有的單詞字符序列。單詞字符是alnum類中的字母數字字符或下劃線(_)。

由於)單詞字符,圖案\)[[:>:]]可以從未匹配; [[:>:]]\),另一方面,匹配。

相關問題