2011-10-04 47 views
2

MySQL已經決定不打算把我放在一起的某個正則表達式放在一起。宏偉的計劃是爲了匹配一個字符串,它可能會或可能不會被標點符號終止。MySQL正則表達式困境

我已經進入到下列2個應用程序旨在驗證的正則表達式,並在兩種情況下,表達完美的作品:

\bString\b[[:punct:]]? 

但這引入MySQL作爲

[[:<:]]String[[:>:]][[:punct:]]? 

的那一刻然後它根本不起作用。它會接受字符串但不是字符串!字符串;

我很機智,所以如果有人能夠對此有所瞭解,我會深表謝意!

TIA :-)

+0

兩件事情:使用的MySQL版本?另外,mysql手冊會警告在多字節字符集上使用regexp,因此您應該檢查這不會導致問題。 – Craig

回答

0

[[:>:]]指字的結束。通常是一個空間。

String(注意空格)匹配。
String!不符。

變化的正則表達式爲:

[[:<:]]String[[:>:]]{0,1}[[:punct:]]{0,1} 
+0

謝謝你,約翰!它的工作原理如下:-)我認爲我有一個公平的想法,爲什麼添加這些邊界({0,1})有效,但您是否介意使用邊界突然導致表達式匹配標點符號? – Applemeister

+0

邊界「{0,1}」表示零或一個(空格和/或標點符號)。 – Johan

+0

謝謝!現在出現的唯一問題是表達式不尊重單詞邊界。因此,例如,如果我想查找單詞_car_,它最終會匹配_carrier_,_carrot_,_carnage_,&c。有任何想法嗎? – Applemeister