2016-07-29 53 views
1

我想用正則表達式這個篩選出純粹的中國名字:如何使用正則表達式匹配沒有任何字母,數字或特殊字符的單詞?

SELECT `name` FROM `table` WHERE `name` REGEXP '[u4e00-u9fa5]'; 

但是,根據this,這是不可能的,所以我想辦法,從相反的方向,發現內容沒有任何字母,數字和特殊字符(我知道它不是硬性的),但無法找到「和」運算符,那麼該怎麼做呢?

+0

對不起,沒有字母的「單詞」是不可能的,對吧?另外,如果不應該有文字,也沒有特殊的字符,你需要只匹配空格還是空格?太不清楚了。 –

+0

你可以製作一個負面的字符類,比如'[^ A-Za-z0-9 ./,]',並且在必要時不斷添加它,但是我不清楚你是在問什麼。 –

+0

@WiktorStribiżew對不起,我的意思是中文字或詞。 –

回答

2

MariaDB使用PCRE正則表達式庫以10.0.5版本開頭:「Starting with MariaDB 10.0.5, MariaDB switched to the PCRE regular expression library for enhanced regular expressions.」。

要匹配包含中國信使用條目

REGEXP '[\\x{4e00}-\\x{9fa5}]' 

甚至

REGEXP '\\p{Han}' 

要沒有中國字母匹配相反,,用途:

REGEXP '^[^\\x{4e00}-\\x{9fa5}]*$' 

or

REGEXP '^\\P{Han}*$' 
+0

Stribizew,SELECT'name' FROM'table' WHERE'name' REGEXP'^ \\ p {Han} * $',不會匹配沒有中文字母的條目,而是純中文單詞。 –

+0

是的,我知道。 '^ \\ p {Han} * $''匹配一個只包含中文字母的字符串。而'^ \\ P {Han} * $''會匹配一個由中文字母以外的字符組成的字符串。請注意後一個正則表達式中的大寫'P',這意味着我們正在逆轉Unicode屬性類。 –

+0

非常感謝 –

相關問題