2016-07-05 156 views
2

結尾我試圖找到匹配單詞但不以特定字符開始/結尾的正則表達式。正則表達式匹配不以......開頭的字符串,並且不以

例子: 搜索詞是微型

它應該符合:

mini 
mini abc 
mini-abc (- could be anything else but not [a-zA-Z0-9]) 
abc mini 
abc-mini (- could be anything else but [a-zA-Z0-9]) 
abc mini abc 
abcminiabc-mini (- could be anything else but not [a-zA-Z0-9]) 
mini-abcminiabc (- could be anything else but not [a-zA-Z0-9]) 
miniabc-mini (- could be anything else but not [a-zA-Z0-9]) 
mini-miniabc (- could be anything else but not [a-zA-Z0-9]) 
abcmin-mini (- could be anything else but not [a-zA-Z0-9]) 
mini-abcmini (- could be anything else but not [a-zA-Z0-9]) 

但不是:

miniabc 
abcmini 
abcminiabc 
miniabc abc 
abc abcmini 
abcminiabc abc 
abc abcminiabc 

我已經試過這樣的事情:

^(.*)([^a-zA-Z0-9]{0,1})MINI([^a-zA-Z0-9]{0,1})(.*)$ 

但似乎沒有工作,因爲這也匹配'miniabc','abcmini','abcminiabc',這不是我想要的。

(語言是PHP的情況下,這是不可能在MySQL。)

回答

6

您可以使用PHP(PCRE)環視基於正則表達式:

(?<![a-zA-Z0-9])mini(?![a-zA-Z0-9]) 
  • (?![a-zA-Z0-9])負先行斷言下一個位置沒有[a-zA-Z0-9]個字符
  • (?<![a-zA-Z0-9])否定後視斷言以前的位置沒有[a-zA-Z0-9]字符

More on lookarounds regular expressions

RegEx Demo

+1

運行完美。謝謝。 此外,飛濺與邊界的答案很好,但下劃線(mini_)不匹配。 如果其他人有同樣的問題,並不在乎下劃線'[[::<:]]mini[[:>:]]'可以在mysql中完成。 – Flash

相關問題